summaryrefslogtreecommitdiffstats
path: root/fs/ceph/inode.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2019-06-06 07:29:23 -0400
committerIlya Dryomov <idryomov@gmail.com>2019-07-08 14:01:43 +0200
commita35ead314e0b9252a92a5e179a00b242d1af7bff (patch)
treec7a27fb8ad7c7f04a297b14be3a23bff46bcb5a6 /fs/ceph/inode.c
parent441d367644e2f60b37f36bfc656deee551acba5b (diff)
downloadlinux-a35ead314e0b9252a92a5e179a00b242d1af7bff.tar.bz2
ceph: add change_attr field to ceph_inode_info
Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/inode.c')
-rw-r--r--fs/ceph/inode.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
index a13b627270f3..2c49eb831c6f 100644
--- a/fs/ceph/inode.c
+++ b/fs/ceph/inode.c
@@ -13,6 +13,7 @@
#include <linux/posix_acl.h>
#include <linux/random.h>
#include <linux/sort.h>
+#include <linux/iversion.h>
#include "super.h"
#include "mds_client.h"
@@ -42,6 +43,7 @@ static int ceph_set_ino_cb(struct inode *inode, void *data)
{
ceph_inode(inode)->i_vino = *(struct ceph_vino *)data;
inode->i_ino = ceph_vino_to_ino(*(struct ceph_vino *)data);
+ inode_set_iversion_raw(inode, 0);
return 0;
}
@@ -796,6 +798,9 @@ static int fill_inode(struct inode *inode, struct page *locked_page,
le64_to_cpu(info->version) > (ci->i_version & ~1)))
new_version = true;
+ /* Update change_attribute */
+ inode_set_max_iversion_raw(inode, iinfo->change_attr);
+
__ceph_caps_issued(ci, &issued);
issued |= __ceph_caps_dirty(ci);
new_issued = ~issued & info_caps;