Eric Blake <ebl...@redhat.com> writes:

> On 06/04/2013 01:24 PM, Markus Armbruster wrote:
>> Paolo Bonzini <pbonz...@redhat.com> writes:
>> 
>>> Il 04/06/2013 18:37, Markus Armbruster ha scritto:
>>>> I figure the bit that can't be resolved now is letting the user switch
>>>> off "stop on error" safely before a drive_del.  Even if we had a command
>>>> for that, there'd still be a window between that command's execution and
>>>> drive_del's.  Your patch solves the problem by having drive_del switch
>>>> it off unconditionally.  Oookay, but please document it, because it's
>>>> not exactly obvious.
>>>
>>> It is not obvious, but it is not surprising either when you see it (i.e.
>>> you won't really be surprised by the errors in the guest and won't need
>>> to know that, under the hood, rerror has been changed from the value you
>>> specified).
>>>
>
>> This is drive_add's documentation in hmp-commands.hx:
>> 
>>     Remove host block device.  The result is that guest generated IO is
>>     no longer submitted against the host device underlying the disk.
>>     Once a drive has been deleted, the QEMU Block layer returns -EIO
>>     which results in IO errors in the guest for applications that are
>>     reading/writing to the device.
>> 
>> Suggest to add:
>> 
>>     These errors are always reported to the guest, regardless of the
>>     drive's error actions (drive options rerror, werror).
>> 
>> Independently, libvirt needs fixing.
>
> Total agreement that libvirt needs to use a saner disk hot-unplug
> sequence when it is known that qemu provides one.  I've filed
> https://bugzilla.redhat.com/show_bug.cgi?id=970761
> to remind us to fix libvirt.

Sane sequence

1. device_del

2. Wait for DEVICE_DELETED

3. if timeout, drive_del

Might make sense to offer a choice in the API between "fail" and
"destroy the block device" if guest doesn't cooperate.

Reply via email to