mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
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>
This commit is contained in:
parent
441d367644
commit
a35ead314e
3 changed files with 8 additions and 2 deletions
|
@ -13,6 +13,7 @@
|
||||||
#include <linux/posix_acl.h>
|
#include <linux/posix_acl.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/sort.h>
|
#include <linux/sort.h>
|
||||||
|
#include <linux/iversion.h>
|
||||||
|
|
||||||
#include "super.h"
|
#include "super.h"
|
||||||
#include "mds_client.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;
|
ceph_inode(inode)->i_vino = *(struct ceph_vino *)data;
|
||||||
inode->i_ino = ceph_vino_to_ino(*(struct ceph_vino *)data);
|
inode->i_ino = ceph_vino_to_ino(*(struct ceph_vino *)data);
|
||||||
|
inode_set_iversion_raw(inode, 0);
|
||||||
return 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)))
|
le64_to_cpu(info->version) > (ci->i_version & ~1)))
|
||||||
new_version = true;
|
new_version = true;
|
||||||
|
|
||||||
|
/* Update change_attribute */
|
||||||
|
inode_set_max_iversion_raw(inode, iinfo->change_attr);
|
||||||
|
|
||||||
__ceph_caps_issued(ci, &issued);
|
__ceph_caps_issued(ci, &issued);
|
||||||
issued |= __ceph_caps_dirty(ci);
|
issued |= __ceph_caps_dirty(ci);
|
||||||
new_issued = ~issued & info_caps;
|
new_issued = ~issued & info_caps;
|
||||||
|
|
|
@ -156,7 +156,7 @@ static int parse_reply_info_in(void **p, void *end,
|
||||||
ceph_decode_copy(p, &info->btime, sizeof(info->btime));
|
ceph_decode_copy(p, &info->btime, sizeof(info->btime));
|
||||||
|
|
||||||
/* change attribute */
|
/* change attribute */
|
||||||
ceph_decode_skip_64(p, end, bad);
|
ceph_decode_64_safe(p, end, info->change_attr, bad);
|
||||||
|
|
||||||
/* dir pin */
|
/* dir pin */
|
||||||
if (struct_v >= 2) {
|
if (struct_v >= 2) {
|
||||||
|
@ -208,7 +208,7 @@ static int parse_reply_info_in(void **p, void *end,
|
||||||
if (features & CEPH_FEATURE_FS_BTIME) {
|
if (features & CEPH_FEATURE_FS_BTIME) {
|
||||||
ceph_decode_need(p, end, sizeof(info->btime), bad);
|
ceph_decode_need(p, end, sizeof(info->btime), bad);
|
||||||
ceph_decode_copy(p, &info->btime, sizeof(info->btime));
|
ceph_decode_copy(p, &info->btime, sizeof(info->btime));
|
||||||
ceph_decode_skip_64(p, end, bad);
|
ceph_decode_64_safe(p, end, info->change_attr, bad);
|
||||||
}
|
}
|
||||||
|
|
||||||
info->dir_pin = -ENODATA;
|
info->dir_pin = -ENODATA;
|
||||||
|
|
|
@ -71,6 +71,7 @@ struct ceph_mds_reply_info_in {
|
||||||
s32 dir_pin;
|
s32 dir_pin;
|
||||||
struct ceph_timespec btime;
|
struct ceph_timespec btime;
|
||||||
struct ceph_timespec snap_btime;
|
struct ceph_timespec snap_btime;
|
||||||
|
u64 change_attr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ceph_mds_reply_dir_entry {
|
struct ceph_mds_reply_dir_entry {
|
||||||
|
|
Loading…
Add table
Reference in a new issue