summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2012-11-19 10:43:36 +0800
committerSage Weil <sage@inktank.com>2012-12-01 12:52:21 -0800
commit5620f3d0bfec29ae3f58c57d2ec502cb41b2cefd (patch)
tree0948e40ba627c2a713da77afe8c06c56ed2a3d71
parent7794de61b5f4b5c2e20c99e26c8578361d9b0247 (diff)
downloadceph-5620f3d0bfec29ae3f58c57d2ec502cb41b2cefd.tar.gz
mds: allow try_eval to eval unstable locks in freezing object
Unstable locks hold auth_pins on the object, it prevents the freezing object become frozen and then unfreeze. So try_eval() should not wait for freezing object Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
-rw-r--r--src/mds/Locker.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc
index c29ac34ec85..7d55940f1ad 100644
--- a/src/mds/Locker.cc
+++ b/src/mds/Locker.cc
@@ -845,8 +845,8 @@ void Locker::try_eval(MDSCacheObject *p, int mask)
return;
}
- if (p->is_auth() && !p->can_auth_pin()) {
- dout(7) << "try_eval can't auth_pin, waiting on " << *p << dendl;
+ if (p->is_auth() && p->is_frozen()) {
+ dout(7) << "try_eval frozen, waiting on " << *p << dendl;
p->add_waiter(MDSCacheObject::WAIT_UNFREEZE, new C_Locker_Eval(this, p, mask));
return;
}