All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	jdenemar@redhat.com, qemu-devel@nongnu.org,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] QMP: RFC: I/O error info & query-stop-reason
Date: Thu, 02 Jun 2011 13:33:52 -0500	[thread overview]
Message-ID: <4DE7D790.70807@codemonkey.ws> (raw)
In-Reply-To: <20110602150900.7d2657fb@doriath>

On 06/02/2011 01:09 PM, Luiz Capitulino wrote:
> On Thu, 02 Jun 2011 13:00:04 -0500
> Anthony Liguori<anthony@codemonkey.ws>  wrote:
>
>> On 06/02/2011 12:57 PM, Luiz Capitulino wrote:
>>> On Wed, 01 Jun 2011 16:35:03 -0500
>>> Anthony Liguori<anthony@codemonkey.ws>   wrote:
>>>
>>>> On 06/01/2011 04:12 PM, Luiz Capitulino wrote:
>>>>> Hi there,
>>>>>
>>>>> There are people who want to use QMP for thin provisioning. That's, the VM is
>>>>> started with a small storage and when a no space error is triggered, more space
>>>>> is allocated and the VM is put to run again.
>>>>>
>>>>> QMP has two limitations that prevent people from doing this today:
>>>>>
>>>>> 1. The BLOCK_IO_ERROR doesn't contain error information
>>>>>
>>>>> 2. Considering we solve item 1, we still have to provide a way for clients
>>>>>       to query why a VM stopped. This is needed because clients may miss the
>>>>>       BLOCK_IO_ERROR event or may connect to the VM while it's already stopped
>>>>>
>>>>> A proposal to solve both problems follow.
>>>>>
>>>>> A. BLOCK_IO_ERROR information
>>>>> -----------------------------
>>>>>
>>>>> We already have discussed this a lot, but didn't reach a consensus. My solution
>>>>> is quite simple: to add a stringfied errno name to the BLOCK_IO_ERROR event,
>>>>> for example (see the "reason" key):
>>>>>
>>>>> { "event": "BLOCK_IO_ERROR",
>>>>>       "data": { "device": "ide0-hd1",
>>>>>                 "operation": "write",
>>>>>                 "action": "stop",
>>>>>                 "reason": "enospc", }
>>>>
>>>> you can call the reason whatever you want, but don't call it stringfied
>>>> errno name :-)
>>>>
>>>> In fact, just make reason "no space".
>>>
>>> You mean, we should do:
>>>
>>>     "reason": "no space"
>>>
>>> Or that we should make it a boolean, like:
>>>
>>>    "no space": true
>>
>>
>> Do we need reason in BLOCK_IO_ERROR if query-block returns this information?
>
> True, no.
>
>>> I'm ok with either way. But in case you meant the second one, I guess
>>> we should make "reason" a dictionary so that we can group related
>>> information when we extend the field, for example:
>>>
>>>    "reason": { "no space": false, "no permission": true }
>>
>> Why would we ever have "no permission"?

Why did it happen?  It's not clear to me when read/write would return 
EPERM.  open() should fail.  In fact, EPERM is not mentioned in man 2 read.

Regards,

Anthony Liguori

>
> It's an I/O error. I have a report from a developer who was getting
> the BLOCK_IO_ERROR event and had to debug qemu to know the error cause,
> it turned out to be no permission.
>
>> Part of my argument for not having reason is I don't think we actually
>> need to be this generic.  I think we're over abstracting.
>
> I'm quite sure we'll want to add new errors reasons in the near future.
>

  reply	other threads:[~2011-06-02 18:33 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-01 21:12 [Qemu-devel] QMP: RFC: I/O error info & query-stop-reason Luiz Capitulino
2011-06-01 21:35 ` Anthony Liguori
2011-06-02  9:06   ` Daniel P. Berrange
2011-06-02 13:08     ` Anthony Liguori
2011-06-02 13:24       ` Jiri Denemark
2011-06-02 14:02         ` Anthony Liguori
2011-06-02 18:01           ` Luiz Capitulino
2011-06-02 18:32             ` Anthony Liguori
2011-06-02 18:57               ` Luiz Capitulino
2011-06-02 19:35                 ` Anthony Liguori
2011-06-03  9:26             ` Daniel P. Berrange
2011-06-03 12:43               ` Anthony Liguori
2011-06-03 12:57                 ` Daniel P. Berrange
2011-06-03 13:26                   ` Anthony Liguori
2011-06-03 13:39                     ` Daniel P. Berrange
2011-06-03 13:44                       ` Luiz Capitulino
2011-06-03 14:01                         ` Anthony Liguori
2011-06-03 13:41                     ` Jan Kiszka
2011-06-03 13:51                       ` Anthony Liguori
2011-06-03 13:59                         ` Jan Kiszka
2011-06-03 14:03                         ` Daniel P. Berrange
2011-06-06 11:21           ` Markus Armbruster
2011-06-02 17:57   ` Luiz Capitulino
2011-06-02 18:00     ` Anthony Liguori
2011-06-02 18:09       ` Luiz Capitulino
2011-06-02 18:33         ` Anthony Liguori [this message]
2011-06-02 19:13           ` Luiz Capitulino
2011-06-02 20:03             ` Anthony Liguori
2011-06-02 20:13               ` [Qemu-devel] [libvirt] " Eric Blake
2011-06-02 20:55                 ` Anthony Liguori
2011-06-06  9:25         ` [Qemu-devel] " Kevin Wolf
2011-06-06 11:27           ` Markus Armbruster
2011-06-06 13:09             ` Anthony Liguori
2011-06-06 13:08           ` Anthony Liguori
2011-06-06 15:27             ` Daniel P. Berrange
2011-06-06 15:30               ` Luiz Capitulino
2011-06-08 12:59                 ` Anthony Liguori
2011-06-07 14:46             ` Luiz Capitulino
2011-06-07 15:39               ` Anthony Liguori
2011-06-07 15:54                 ` Luiz Capitulino
2011-06-07 16:32                   ` Anthony Liguori
2011-06-07 17:43                     ` Luiz Capitulino
2011-06-07 18:43                       ` Anthony Liguori
2011-06-07 18:48                         ` Luiz Capitulino
2011-06-07 15:41               ` Markus Armbruster
2011-06-07 16:31                 ` Anthony Liguori
2011-06-06 11:13   ` Markus Armbruster
2011-06-06 11:28     ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4DE7D790.70807@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=jdenemar@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.