]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: look at loner issued|wanted in file_eval
authorSage Weil <sage@newdream.net>
Tue, 26 May 2009 22:51:01 +0000 (15:51 -0700)
committerSage Weil <sage@newdream.net>
Wed, 27 May 2009 17:31:14 +0000 (10:31 -0700)
src/mds/Locker.cc

index 046f5f82d549985d430e546c1125868122758c21..683040fcf0588c036fa2ebd801f1cc6632efabe0 100644 (file)
@@ -3036,7 +3036,7 @@ void Locker::file_eval(ScatterLock *lock, bool *need_issue)
     int loner_issued, other_issued, xlocker_issued;
     in->get_caps_issued(&loner_issued, &other_issued, &xlocker_issued, CEPH_CAP_SFILE);
 
-    if (!(loner_wanted & (CEPH_CAP_GEXCL|CEPH_CAP_GWR|CEPH_CAP_GBUFFER)) ||
+    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)) ||
        (in->inode.is_dir() && in->multiple_nonstale_caps())) {  // FIXME.. :/
       dout(20) << " should lose it" << dendl;