From c31d20162b3648c2f16286f6ceb09f141abd9207 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 7 Dec 2010 21:26:59 -0500 Subject: [PATCH] DAFS: fix forceDAFS support in salvager we need to get the shared partition lock for the per-volume forceDAFS case Reviewed-on: http://gerrit.openafs.org/3487 Reviewed-by: Andrew Deason Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 81e7a5adf93a6b5eec104ca4bde429cf6cb0548a) Change-Id: Ie7c6a43d25c621a3faca2a6564fbc06f9af87880 Reviewed-on: http://gerrit.openafs.org/4278 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/vol/salvager.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vol/salvager.c b/src/vol/salvager.c index da5c168a4..6439b0fb3 100644 --- a/src/vol/salvager.c +++ b/src/vol/salvager.c @@ -285,10 +285,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 @@ -316,6 +312,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 -- 2.39.5