]> xenbits.xensource.com Git - libvirt.git/commitdiff
Release only specific sanlock resource
authorFrido Roose <frido.roose@gmail.com>
Mon, 13 Aug 2012 10:54:38 +0000 (12:54 +0200)
committerEric Blake <eblake@redhat.com>
Mon, 13 Aug 2012 16:29:12 +0000 (10:29 -0600)
This is a patch for bug 826704
All sanlock resources get released when hot-dettaching a disk from the domain
because virLockManagerSanlockRelease uses the wrong function parameters/flags.
With the patch only the resources that should be released are cleaned up.

Signed-off-by: Frido Roose <frido.roose@gmail.com>
src/locking/lock_driver_sanlock.c

index 7c71af3f0cda6ab76864d42d4232b90fc77efd04..9ec99dd7d4923e8bdf45f11a14d1240145c1c952 100644 (file)
@@ -814,7 +814,7 @@ static int virLockManagerSanlockRelease(virLockManagerPtr lock,
                                         unsigned int flags)
 {
     virLockManagerSanlockPrivatePtr priv = lock->privateData;
-    int res_count;
+    int res_count = priv->res_count;
     int rv;
 
     virCheckFlags(0, -1);
@@ -834,7 +834,8 @@ static int virLockManagerSanlockRelease(virLockManagerPtr lock,
             VIR_FREE(*state);
     }
 
-    if ((rv = sanlock_release(-1, priv->vm_pid, SANLK_REL_ALL, 0, NULL)) < 0) {
+    if ((rv = sanlock_release(-1, priv->vm_pid, 0, res_count,
+                              priv->res_args)) < 0) {
         if (rv <= -200)
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            _("Failed to release lock: error %d"), rv);