qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/2] block: asynchronously stop the VM on I/O


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH v2 2/2] block: asynchronously stop the VM on I/O errors
Date: Thu, 19 Jun 2014 16:07:47 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

On 06/05/2014 06:53 AM, Paolo Bonzini wrote:
> With virtio-blk dataplane, I/O errors might occur while QEMU is
> not in the main I/O thread.  However, it's invalid to call vm_stop
> when we're neither in a VCPU thread nor in the main I/O thread,
> even if we were to take the iothread mutex around it.
> 
> To avoid this problem, we can raise a request to the main I/O thread,
> similar to what QEMU does when vm_stop is called from a CPU thread.
> We know that bdrv_error_action is called from an AIO callback, and
> the moment at which the callback will fire is not well-defined; it
> depends on the moment at which the disk or OS finishes the operation,
> which can happen at any time.  Note that QEMU is certainly not in a CPU
> thread and we do not need to call cpu_stop_current() like vm_stop() does.
> 
> However, we need to ensure that any action taken by management will
> result in correct detection of the error _and_ a running VM.  In particular:
> 
> - the event must be raised after the iostatus has been set, so that
> "info block" will return an iostatus that matches the event.
> 
> - the VM must be stopped after the iostatus has been set, so that
> "info block" will return an iostatus that matches the runstate.
> 
> The ordering between the STOP and BLOCK_IO_ERROR events is preserved;
> BLOCK_IO_ERROR is documented to come first.
> 
> This makes bdrv_error_action() thread safe (assuming QMP events are,
> which is attacked by a separate series).
> 
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
>  block.c                 | 20 ++++++++++++++++++--
>  docs/qmp/qmp-events.txt |  2 +-
>  stubs/vm-stop.c         |  7 ++++++-
>  3 files changed, 25 insertions(+), 4 deletions(-)

This may need to be rebased, since events are now QAPI.

Reviewed-by: Eric Blake <address@hidden>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]