ceph: request xattrs if xattr_version is zero
authorYan, Zheng <zyan@redhat.com>
Tue, 16 Sep 2014 13:46:17 +0000 (21:46 +0800)
committerIlya Dryomov <idryomov@redhat.com>
Tue, 14 Oct 2014 17:03:38 +0000 (21:03 +0400)
commit508b32d8661b12da4c9ca41a9b2054e1dc92fa7e
tree81b68ad636814b6ffbc3af1be01276a038b50759
parentb76f82398c1017e303d87760e22125714010207f
ceph: request xattrs if xattr_version is zero

Following sequence of events can happen.
  - Client releases an inode, queues cap release message.
  - A 'lookup' reply brings the same inode back, but the reply
    doesn't contain xattrs because MDS didn't receive the cap release
    message and thought client already has up-to-data xattrs.

The fix is force sending a getattr request to MDS if xattrs_version
is 0. The getattr mask is set to CEPH_STAT_CAP_XATTR, so MDS knows client
does not have xattr.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/file.c
fs/ceph/inode.c
fs/ceph/ioctl.c
fs/ceph/super.h
fs/ceph/xattr.c