DAFS: fix forceDAFS support in salvager
authorDerrick Brashear <shadow@dementia.org>
Wed, 8 Dec 2010 02:26:59 +0000 (21:26 -0500)
committerDerrick Brashear <shadow@dementia.org>
Tue, 22 Mar 2011 11:53:06 +0000 (04:53 -0700)
we need to get the shared partition lock for the per-volume
forceDAFS case

Change-Id: I7be91420bb0df5963e789c932e5c469fe02ec108
Reviewed-on: http://gerrit.openafs.org/3487
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/vol/salvager.c

index 78ad821..883ef07 100644 (file)
@@ -294,10 +294,6 @@ handleit(struct cmd_syndesc *as, void *arock)
     }
 #endif
 
-    if (get_salvage_lock) {
-       ObtainSalvageLock();
-    }
-
     /* Note:  if seenvol we initialize this as a standard volume utility:  this has the
      * implication that the file server may be running; negotations have to be made with
      * the file server in this case to take the read write volume and associated read-only
@@ -325,6 +321,14 @@ handleit(struct cmd_syndesc *as, void *arock)
        Exit(1);
     }
 
+    /* defer lock until we init volume package */
+    if (get_salvage_lock) {
+       if (seenvol && AskDAFS()) /* support forceDAFS */
+           ObtainSharedSalvageLock();
+       else
+           ObtainSalvageLock();
+    }
+
     /*
      * Ok to defer this as Exit will clean up and no real work is done
      * init'ing volume package