From 6573635ba48a9b6c4f364e8f8b7132c90ea2e8e9 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 2 Aug 2010 16:27:18 -0700 Subject: [PATCH] mds: fix cap encoding skipping when snaprealm differs 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 --- src/mds/CInode.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 88b9f71dc8d0d..2dc12aa6c6675 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -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; -- 2.39.5