summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-28 10:51:11 -0700
committerSage Weil <sage@inktank.com>2013-05-29 10:27:26 -0700
commit0071b8e75bd3f5a09cc46e2225a018f6d1ef0680 (patch)
tree90e1ab7d6a630c62f5a0cc8c33c5fbf684d44b65
parentf71e1b1fbf1f24d1557ef5a5d1a1307e585eebbd (diff)
downloadceph-0071b8e75bd3f5a09cc46e2225a018f6d1ef0680.tar.gz
mds: stay in SCAN state in file_eval
If we are in the SCAN state, stay there until the recovery finishes. Do not jump to another state from file_eval(). Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/mds/Locker.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc
index aa90bb07b30..57154b3d9f6 100644
--- a/src/mds/Locker.cc
+++ b/src/mds/Locker.cc
@@ -4150,6 +4150,10 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue)
if (lock->get_parent()->is_freezing_or_frozen())
return;
+ // wait for scan
+ if (lock->get_state() == LOCK_SCAN)
+ return;
+
// excl -> *?
if (lock->get_state() == LOCK_EXCL) {
dout(20) << " is excl" << dendl;