]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix cap encoding skipping when snaprealm differs
authorSage Weil <sage@newdream.net>
Mon, 2 Aug 2010 23:27:18 +0000 (16:27 -0700)
committerSage Weil <sage@newdream.net>
Mon, 2 Aug 2010 23:27:44 +0000 (16:27 -0700)
We were avoiding adding a new cap, but _any_ issue is problematic, not just
adds (which we can't really be sure about anyway due to races with client
cap release).

Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/CInode.cc

index 88b9f71dc8d0d3709cff5a8dd3b338b097c2e294..2dc12aa6c66758e4be02debe27ddb1c078c23452 100644 (file)
@@ -1770,7 +1770,7 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
       }
     }
 
-    if (cap && valid) {
+    if (!no_caps && valid && cap) {
       int likes = get_caps_liked();
       int allowed = get_caps_allowed_for_client(client);
       int issue = (cap->wanted() | likes) & allowed;
@@ -1786,6 +1786,7 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
       e.cap.mseq = cap->get_mseq();
       e.cap.realm = find_snaprealm()->inode->ino();
     } else {
+      e.cap.cap_id = 0;
       e.cap.caps = 0;
       e.cap.seq = 0;
       e.cap.mseq = 0;