From: Yan, Zheng Date: Thu, 25 Jul 2013 04:33:51 +0000 (+0800) Subject: mds: don't issue caps while session is stale X-Git-Tag: v0.68~99^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0c22dade2481af5431c3ce06a2e2329937225a95;p=ceph.git mds: don't issue caps while session is stale Locker::issue_caps() does not issue new caps to stale client, CInode::encode_inodestat() should have the same logical. Signed-off-by: Yan, Zheng --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index d215d18690f6..dd483263b6dc 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -2733,10 +2733,12 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session, // do not issue caps if inode differs from readdir snaprealm SnapRealm *realm = find_snaprealm(); - bool no_caps = (realm && dir_realm && realm != dir_realm) || + bool no_caps = session->is_stale() || + (realm && dir_realm && realm != dir_realm) || is_frozen() || state_test(CInode::STATE_EXPORTINGCAPS); if (no_caps) dout(20) << "encode_inodestat no caps" + << (session->is_stale()?", session stale ":"") << ((realm && dir_realm && realm != dir_realm)?", snaprealm differs ":"") << (state_test(CInode::STATE_EXPORTINGCAPS)?", exporting caps":"") << (is_frozen()?", frozen inode":"") << dendl;