]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-vos-move-avoid-spurious-unlock-20080424
authorDerrick Brashear <shadow@dementia.org>
Thu, 24 Apr 2008 23:45:47 +0000 (23:45 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 24 Apr 2008 23:45:47 +0000 (23:45 +0000)
LICENSE IPL10

lightly modified from what Bren Mills submitted; the second unlock call after mfail may be entirely useless.

(cherry picked from commit b87935a4c5f26357e29f1db46eff8b1cf9185f3b)

src/volser/vsprocs.c

index fa44258dec47d28da12ae34809d0516c22edf354..6d3ac5e68159128887455b93a460b0a9bf206ba4 100644 (file)
@@ -1790,6 +1790,7 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart,
        ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1,
                  (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP));
        VDONE;
+       islocked = 0;
     }
 
     if (clonetid) {
@@ -1995,12 +1996,14 @@ UV_MoveVolume2(afs_int32 afromvol, afs_int32 afromserver, afs_int32 afrompart,
     }
 
     /* unlock VLDB entry */
-    VPRINT1("Recovery: Releasing lock on VLDB entry for volume %u ...",
-           afromvol);
-    ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1,
-             (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP));
-    VDONE;
-
+    if (islocked) {
+       VPRINT1("Recovery: Releasing lock on VLDB entry for volume %u ...",
+               afromvol);
+       ubik_VL_ReleaseLock(cstruct, 0, afromvol, -1,
+                           (LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP));
+       VDONE;
+       islocked = 0;
+    }
   done:                        /* routine cleanup */
     if (volName)
        free(volName);