On 17.05.2013 10:16, Li Wei wrote: > On 05/17/2013 04:07 PM, Michal Privoznik wrote: >> On 17.05.2013 07:47, Li Wei wrote: >>> Hi Michal, Daniel >>> >>> It seems there is something wrong with the 2/2 part of this patchset. >>> When I do an "change-media" command in virsh, it doesn't do any better >>> than before, but even worse(I must to wait 5 secs to see the error). >>> >>> I'm not family with libvirt, just add some log things in the qemu_hotplug.c >>> and found the tray_status never change to open, but with michal's original >>> patch (which do active poll on tray_status), I can do "change-media" successfully >>> every time. >> >> Yes & no. Thing is - originally we ignored tray status in the guest. So >> in case guest has locked the tray and thus ignored our eject request, we >> have changed the media anyway, resulting in possible I/O errors within >> guest. >> >> With my patch, we send eject request to the qemu, and actively poll for >> the tray to open. We check for up to 10 times every 200ms. So guest has >> 2 seconds to open the tray. If the guest doesn't eject media and open >> the tray we don't proceed with forcibly changing the media. >> >> These patches are actually a bug fix for >> https://bugzilla.redhat.com/show_bug.cgi?id=892289 > > Hmm... I think you misunderstood my meaning(sorry for my pool english), > simply to say, I can get expected behavior by apply patch V1 but not V2. > > In V1, we do active poll on qemuMonitorGetBlockInfo(), and in V2 we just > wait for origdisk->tray_status to become VIR_DOMAIN_DISK_TRAY_OPEN but > this never happened. > > Thanks, > Wei Aaah, now I understand. So you are saying that the event is not being delivered. What's the qemu version? If you turn the debug logs on, do you see DEVICE_TRAY_MOVED in them? http://wiki.libvirt.org/page/DebugLogs Or maybe the timeout is just short for your guest to eject the tray. So after a while, does 'virsh change-media' succeed? Michal > >> >>> >>> IMHO, there must be some bug in the processing of qemu tray change. >>> >>> Thanks, >>> Wei >>> >>> >>> On 01/25/2013 08:20 PM, Michal Privoznik wrote: >>>> The first patch is bare bug fix (without any bug reported though). >>>> The second is again a bug fix, but not so easy to spot. Basically, when we >>>> change a media, we should issue 'eject' first, then wait until the tray gets >>>> open, after which we can finally issue 'change' command. Even for bare 'eject' >>>> we ought to check status, shouldn't we? >>>> >>>> Michal Privoznik (2): >>>> qemu_monitor: Fix tray-open attribute in query-block >>>> qemu_hotplug: Rework media changing process >>>> >>>> src/qemu/qemu_hotplug.c | 51 +++++++++++++++++++++++++++++++++++++++++--- >>>> src/qemu/qemu_monitor_json.c | 2 +- >>>> src/qemu/qemu_monitor_text.c | 6 +++--- >>>> 3 files changed, 52 insertions(+), 7 deletions(-) >>>> >> >> > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list