diff options
author | Sage Weil <sage@inktank.com> | 2013-05-28 10:51:11 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-29 10:28:25 -0700 |
commit | 482733e9603e47a3a427b17bfb9b9189dacd5109 (patch) | |
tree | f19607b4483a2b3801f6d136185f8a2a66f1b285 | |
parent | 29e4e7e316fe3f3028e6930bb5987cfe3a5e59ab (diff) | |
download | ceph-482733e9603e47a3a427b17bfb9b9189dacd5109.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>
(cherry picked from commit 0071b8e75bd3f5a09cc46e2225a018f6d1ef0680)
-rw-r--r-- | src/mds/Locker.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 4a23e0bc47f..3d8c5469a3c 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -4108,6 +4108,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; |