[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
signature.asc
Description: OpenPGP digital signature