[libvirt] [PATCH] qemu: Use proper agent entering function when freezing filesystems

When doing snapshots, the filesystem freeze function used the agent entering function that expects the qemud_driver unlocked. This might cause a deadlock of the qemu driver if the agent does not respond. The only call path of this function has the qemud_driver locked, so this patch changes the entering functions to those expecting the driver locked. --- src/qemu/qemu_driver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b0a0bb5..50f44ce 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -10375,6 +10375,7 @@ qemuDomainSnapshotIsAllowed(virDomainObjPtr vm) return true; } +/* this function expects the driver lock to be held by the caller */ static int qemuDomainSnapshotFSFreeze(struct qemud_driver *driver, virDomainObjPtr vm) { @@ -10393,9 +10394,9 @@ qemuDomainSnapshotFSFreeze(struct qemud_driver *driver, return -1; } - qemuDomainObjEnterAgent(driver, vm); + qemuDomainObjEnterAgentWithDriver(driver, vm); freezed = qemuAgentFSFreeze(priv->agent); - qemuDomainObjExitAgent(driver, vm); + qemuDomainObjExitAgentWithDriver(driver, vm); return freezed; } -- 1.7.12

On 10/01/2012 10:04 AM, Peter Krempa wrote:
When doing snapshots, the filesystem freeze function used the agent entering function that expects the qemud_driver unlocked. This might cause a deadlock of the qemu driver if the agent does not respond.
The only call path of this function has the qemud_driver locked, so this patch changes the entering functions to those expecting the driver locked. --- src/qemu/qemu_driver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
ACK. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 10/01/12 23:41, Eric Blake wrote:
On 10/01/2012 10:04 AM, Peter Krempa wrote:
When doing snapshots, the filesystem freeze function used the agent entering function that expects the qemud_driver unlocked. This might cause a deadlock of the qemu driver if the agent does not respond.
The only call path of this function has the qemud_driver locked, so this patch changes the entering functions to those expecting the driver locked. --- src/qemu/qemu_driver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
ACK.
Pushed. Thanks! Peter
participants (2)
-
Eric Blake
-
Peter Krempa