[libvirt] [PATCH] qemuDomainChangeEjectableMedia: Unlock domain while waiting for event

Eric Blake eblake at redhat.com
Mon May 20 18:39:07 UTC 2013


On 05/20/2013 11:41 AM, Michal Privoznik wrote:
> In 84c59ffa I've tried to fix changing ejectable media process. The
> process should go like this:
> 
> 1) we need to call 'eject' on the monitor
> 2) we should wait for 'DEVICE_TRAY_MOVED' event
> 3) now we can issue 'change' command
> 
> However, while waiting in step 2) the domain monitor was locked. So
> even if qemu reported the desired event, the proper callback was not
> called immediately. The monitor handling code needs to lock the
> monitor in order to read the event. So that's the first lock we must
> not hold while waiting. The second one is the domain lock. When
> monitor handling code reads an event, the appropriate callback is
> called then. The first thing that each callback does is locking the
> corresponding domain as a domain or its device is about to change
> state. So we need to unlock both monitor and VM lock. Well, holding
> any lock while sleep()-ing is not the best thing to do anyway.
> ---
>  src/qemu/qemu_hotplug.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 

ACK.

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130520/5f4d65f2/attachment-0001.sig>


More information about the libvir-list mailing list