diff options
author | Sage Weil <sage@inktank.com> | 2012-11-05 23:26:09 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-11-05 23:06:03 -0800 |
commit | b940d7750d14285fc85ce63b0f0444b58ad3ad93 (patch) | |
tree | fff1bb88b7f2042046d08c44a98a74239af4ca20 | |
parent | 7a82a3214a38cbc7b5750adba23b760a4f51643a (diff) | |
download | ceph-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.cc | 2 |
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. |