From: Yan, Zheng Date: Tue, 16 Sep 2014 06:33:41 +0000 (+0800) Subject: mds: return xattrs when client explictly requests xattrs X-Git-Tag: v0.88~174^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c837fb9428890a53090bc007d202c3692ac7048c;p=ceph.git mds: return xattrs when client explictly requests xattrs Signed-off-by: Yan, Zheng --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 8624b66896e..98de66e4cd8 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -2952,13 +2952,12 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session, // xattr i = pxattr ? pi:oi; - bool had_latest_xattrs = cap && (cap->issued() & CEPH_CAP_XATTR_SHARED) && - cap->client_xattr_version == i->xattr_version && - snapid == CEPH_NOSNAP; // xattr bufferlist xbl; - if (!had_latest_xattrs) { + if ((!cap && !no_caps) || + (cap && cap->client_xattr_version < i->xattr_version) || + (getattr_caps & CEPH_CAP_XATTR_SHARED)) { // client requests xattrs if (!pxattrs) pxattrs = pxattr ? get_projected_xattrs() : &xattrs; ::encode(*pxattrs, xbl);