From: "Daniel P. Berrange" <berrange@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Kevin Wolf <kwolf@redhat.com>,
Stefan Hajnoczi <stefanha@gmail.com>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
jdenemar@redhat.com, Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] QMP: RFC: I/O error info & query-stop-reason
Date: Thu, 2 Jun 2011 10:06:32 +0100 [thread overview]
Message-ID: <20110602090632.GB14571@redhat.com> (raw)
In-Reply-To: <4DE6B087.6010708@codemonkey.ws>
On Wed, Jun 01, 2011 at 04:35:03PM -0500, Anthony Liguori 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".
>
> > "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
> >
> >Valid error reasons could be: "enospc", "eio", etc.
>
> No etc :-) Error reasons should we be well known and well documented.
>
> >B. query-stop-reason
> >--------------------
> >
> >I also have a simple solution for item 2. The vm_stop() accepts a reason
> >argument, so we could store it somewhere and return it as a string, like:
> >
> >-> { "execute": "query-stop-reason" }
> ><- { "return": { "reason": "user" } }
> >
> >Valid reasons could be: "user", "debug", "shutdown", "diskfull" (hey,
> >this should be "ioerror", no?), "watchdog", "panic", "savevm", "loadvm",
> >"migrate".
> >
> >Also note that we have a STOP event. It should be extended with the
> >stop reason too, for completeness.
>
>
> Can we just extend query-block?
Primarily we want 'query-stop-reason' to tell us what caused the VM
CPUs to stop. If that reason was 'ioerror', then 'query-block' could
be used to find out which particular block device(s) caused the IO
error to occurr & get the "reason" that was in the BLOCK_IO_ERROR
event.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2011-06-02 9:06 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 [this message]
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
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=20110602090632.GB14571@redhat.com \
--to=berrange@redhat.com \
--cc=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.