[libvirt] [PATCH] Fix hang in qemudDomainCoreDump.

Daniel Veillard veillard at redhat.com
Thu Mar 11 16:42:52 UTC 2010


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 at redhat.com>
> ---
>  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 at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list