From: Yan, Zheng Date: Thu, 18 Dec 2014 03:41:38 +0000 (+0800) Subject: client: check xattr version independent of inode version X-Git-Tag: v0.93~87^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=505a5f55df6a62764b7a12d936b65e7807b2a68e;p=ceph.git client: check xattr version independent of inode version Fixes: #10343 Signed-off-by: Yan, Zheng --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 1c305510a71..53e225c47a9 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -792,14 +792,6 @@ Inode * Client::add_update_inode(InodeStat *st, utime_t from, in->nlink = st->nlink; } - if ((in->xattr_version == 0 || !(issued & CEPH_CAP_XATTR_EXCL)) && - st->xattrbl.length() && - st->xattr_version > in->xattr_version) { - bufferlist::iterator p = st->xattrbl.begin(); - ::decode(in->xattrs, p); - in->xattr_version = st->xattr_version; - } - in->dirstat = st->dirstat; in->rstat = st->rstat; @@ -823,6 +815,14 @@ Inode * Client::add_update_inode(InodeStat *st, utime_t from, in->inline_version = st->inline_version; } + if ((in->xattr_version == 0 || !(issued & CEPH_CAP_XATTR_EXCL)) && + st->xattrbl.length() && + st->xattr_version > in->xattr_version) { + bufferlist::iterator p = st->xattrbl.begin(); + ::decode(in->xattrs, p); + in->xattr_version = st->xattr_version; + } + // move me if/when version reflects fragtree changes. if (in->dirfragtree != st->dirfragtree) { in->dirfragtree = st->dirfragtree;