summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2012-11-05 23:26:09 -0800
committerSage Weil <sage@inktank.com>2012-11-05 23:06:03 -0800
commitb940d7750d14285fc85ce63b0f0444b58ad3ad93 (patch)
treefff1bb88b7f2042046d08c44a98a74239af4ca20
parent7a82a3214a38cbc7b5750adba23b760a4f51643a (diff)
downloadceph-b940d7750d14285fc85ce63b0f0444b58ad3ad93.tar.gz
mds: base loner decision on wanted RD|WR|EXCL, not CACHE|BUFFER
Observed instance where one client wanted the Fc cap and prevented the loner from getting RD|WR caps. 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 72802ea7e7c..651e11342e0 100644
--- a/src/mds/Locker.cc
+++ b/src/mds/Locker.cc
@@ -4001,7 +4001,7 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue)
in->get_caps_issued(&loner_issued, &other_issued, &xlocker_issued, CEPH_CAP_SFILE);
if (!((loner_wanted|loner_issued) & (CEPH_CAP_GEXCL|CEPH_CAP_GWR|CEPH_CAP_GBUFFER)) ||
- (other_wanted & (CEPH_CAP_GEXCL|CEPH_CAP_GWR|CEPH_CAP_GBUFFER|CEPH_CAP_GRD|CEPH_CAP_GCACHE)) ||
+ (other_wanted & (CEPH_CAP_GEXCL|CEPH_CAP_GWR|CEPH_CAP_GRD)) ||
(in->inode.is_dir() && in->multiple_nonstale_caps())) { // FIXME.. :/
dout(20) << " should lose it" << dendl;
// we should lose it.