On 05.11.2011 02:49, Eric Blake wrote: > qemu/THREADS.txt is explicit that the driver lock must not be > held for long lengths of time, as it blocks all attempts to > manage any other vms on the same connection. We were violating > this by sleep()ing while waiting for a qemu child process to > finish execution during actions such as destroy. > > * src/qemu/qemu_process.h (qemuProcessKill): Alter signature. > * src/qemu/qemu_process.c (qemuProcessKill): Add parameter. > (qemuProcessFakeReboot, qemuProcessShutdownOrReboot) > (qemuProcessStop): Update callers. > * src/qemu/qemu_driver.c (qemuDomainDestroyFlags): Likewise. > --- > > Without this patch, problems in halting one domain could lock > out actions on all other domains for more than 3 seconds, which > is awfully long. > > This doesn't solve all the problems - it is still possible to > have a stuck NFS server being the reason for difficulties in > stopping a domain, such as an lstat() call while attempting to > relabel file systems, and those calls are still done while > the driver lock is held; but I'll be submitting further patches > as I try and reduce the critical section sizes. > > I'm not sure whether this qualifies for 0.9.7 or should wait > for post-release. I'd feel more comfortable to take this in after release. Hopefully, 0.9.7 is going to be stable release (at least by features/bug fixes ratio) even if this is a small and good looking patch. > > src/qemu/qemu_driver.c | 2 +- > src/qemu/qemu_process.c | 35 ++++++++++++++++++++++++++++------- > src/qemu/qemu_process.h | 3 ++- > 3 files changed, 31 insertions(+), 9 deletions(-) > ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list