summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-11-05 23:27:13 -0800
committerSage Weil <sage@inktank.com>2012-11-05 23:06:03 -0800
commit96888ddf154231daa6c7138bb2b97674771cc610 (patch)
tree35fb8c83ef561462b7370c7d0f8d58fb5ac78c43
parentb940d7750d14285fc85ce63b0f0444b58ad3ad93 (diff)
downloadceph-96888ddf154231daa6c7138bb2b97674771cc610.tar.gz
mds: move to from loner -> mix if *anyone* wants rd|wr
We were either going to MIX or SYNC depending on whether non-loners wanted to read/write, but it may be that the loner wants to if our logic for choosing loner vs not longer is based on anything other that just rd|wr wanted. Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/mds/Locker.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc
index 651e11342e0..8b771852d49 100644
--- a/src/mds/Locker.cc
+++ b/src/mds/Locker.cc
@@ -4005,7 +4005,7 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue)
(in->inode.is_dir() && in->multiple_nonstale_caps())) { // FIXME.. :/
dout(20) << " should lose it" << dendl;
// we should lose it.
- if ((other_wanted & (CEPH_CAP_GRD|CEPH_CAP_GWR)) ||
+ if (((other_wanted|loner_wanted) & (CEPH_CAP_GRD|CEPH_CAP_GWR)) ||
lock->is_waiter_for(SimpleLock::WAIT_WR))
scatter_mix(lock, need_issue);
else if (!lock->is_wrlocked()) // let excl wrlocks drain first