On Thu, Mar 11, 2010 at 10:36:29AM -0500, Chris Lalancette wrote: > Currently if you dump the core of a qemu guest with > qemudDomainCoreDump, subsequent commands will hang > up libvirtd. This is because qemudDomainCoreDump > uses qemuDomainWaitForMigrationComplete, which expects > the qemuDriverLock to be held when it's called. This > patch does the simple thing and moves the qemuDriveUnlock > to the end of the qemudDomainCoreDump so that the driver > lock is held for the entirety of the call (as it is done > in qemudDomainSave). We will probably want to make the > lock more fine-grained than that in the future, but > we can fix both qemudDomainCoreDump and qemudDomainSave > at the same time. > > Signed-off-by: Chris Lalancette <clalance@xxxxxxxxxx> > --- > src/qemu/qemu_driver.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index ee3dbd3..49983dd 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -4390,7 +4390,6 @@ static int qemudDomainCoreDump(virDomainPtr dom, > > qemuDriverLock(driver); > vm = virDomainFindByUUID(&driver->domains, dom->uuid); > - qemuDriverUnlock(driver); > > if (!vm) { > char uuidstr[VIR_UUID_STRING_BUFLEN]; > @@ -4401,7 +4400,7 @@ static int qemudDomainCoreDump(virDomainPtr dom, > } > priv = vm->privateData; > > - if (qemuDomainObjBeginJob(vm) < 0) > + if (qemuDomainObjBeginJobWithDriver(driver, vm) < 0) > goto cleanup; > > if (!virDomainObjIsActive(vm)) { > @@ -4499,6 +4498,7 @@ cleanup: > virDomainObjUnlock(vm); > if (event) > qemuDomainEventQueue(driver, event); > + qemuDriverUnlock(driver); > return ret; > } > Okay, I don't see why CoreDump would need to use finer-grained locking thank Save, ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list