Loading fs/ceph/inode.c +2 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,7 @@ struct inode *ceph_alloc_inode(struct super_block *sb) INIT_WORK(&ci->i_work, ceph_inode_work); ci->i_work_mask = 0; memset(&ci->i_btime, '\0', sizeof(ci->i_btime)); ceph_fscache_inode_init(ci); Loading Loading @@ -813,6 +814,7 @@ static int fill_inode(struct inode *inode, struct page *locked_page, dout("%p mode 0%o uid.gid %d.%d\n", inode, inode->i_mode, from_kuid(&init_user_ns, inode->i_uid), from_kgid(&init_user_ns, inode->i_gid)); ceph_decode_timespec64(&ci->i_btime, &iinfo->btime); ceph_decode_timespec64(&ci->i_snap_btime, &iinfo->snap_btime); } Loading fs/ceph/mds_client.c +13 −8 Original line number Diff line number Diff line Loading @@ -150,14 +150,13 @@ static int parse_reply_info_in(void **p, void *end, info->pool_ns_data = *p; *p += info->pool_ns_len; } /* btime, change_attr */ { struct ceph_timespec btime; u64 change_attr; ceph_decode_need(p, end, sizeof(btime), bad); ceph_decode_copy(p, &btime, sizeof(btime)); ceph_decode_64_safe(p, end, change_attr, bad); } /* btime */ ceph_decode_need(p, end, sizeof(info->btime), bad); ceph_decode_copy(p, &info->btime, sizeof(info->btime)); /* change attribute */ ceph_decode_skip_64(p, end, bad); /* dir pin */ if (struct_v >= 2) { Loading Loading @@ -206,6 +205,12 @@ static int parse_reply_info_in(void **p, void *end, } } if (features & CEPH_FEATURE_FS_BTIME) { ceph_decode_need(p, end, sizeof(info->btime), bad); ceph_decode_copy(p, &info->btime, sizeof(info->btime)); ceph_decode_skip_64(p, end, bad); } info->dir_pin = -ENODATA; /* info->snap_btime remains zero */ } Loading fs/ceph/mds_client.h +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ struct ceph_mds_reply_info_in { u64 max_bytes; u64 max_files; s32 dir_pin; struct ceph_timespec btime; struct ceph_timespec snap_btime; }; Loading fs/ceph/super.h +1 −0 Original line number Diff line number Diff line Loading @@ -384,6 +384,7 @@ struct ceph_inode_info { int i_snap_realm_counter; /* snap realm (if caps) */ struct list_head i_snap_realm_item; struct list_head i_snap_flush_item; struct timespec64 i_btime; struct timespec64 i_snap_btime; struct work_struct i_work; Loading Loading
fs/ceph/inode.c +2 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,7 @@ struct inode *ceph_alloc_inode(struct super_block *sb) INIT_WORK(&ci->i_work, ceph_inode_work); ci->i_work_mask = 0; memset(&ci->i_btime, '\0', sizeof(ci->i_btime)); ceph_fscache_inode_init(ci); Loading Loading @@ -813,6 +814,7 @@ static int fill_inode(struct inode *inode, struct page *locked_page, dout("%p mode 0%o uid.gid %d.%d\n", inode, inode->i_mode, from_kuid(&init_user_ns, inode->i_uid), from_kgid(&init_user_ns, inode->i_gid)); ceph_decode_timespec64(&ci->i_btime, &iinfo->btime); ceph_decode_timespec64(&ci->i_snap_btime, &iinfo->snap_btime); } Loading
fs/ceph/mds_client.c +13 −8 Original line number Diff line number Diff line Loading @@ -150,14 +150,13 @@ static int parse_reply_info_in(void **p, void *end, info->pool_ns_data = *p; *p += info->pool_ns_len; } /* btime, change_attr */ { struct ceph_timespec btime; u64 change_attr; ceph_decode_need(p, end, sizeof(btime), bad); ceph_decode_copy(p, &btime, sizeof(btime)); ceph_decode_64_safe(p, end, change_attr, bad); } /* btime */ ceph_decode_need(p, end, sizeof(info->btime), bad); ceph_decode_copy(p, &info->btime, sizeof(info->btime)); /* change attribute */ ceph_decode_skip_64(p, end, bad); /* dir pin */ if (struct_v >= 2) { Loading Loading @@ -206,6 +205,12 @@ static int parse_reply_info_in(void **p, void *end, } } if (features & CEPH_FEATURE_FS_BTIME) { ceph_decode_need(p, end, sizeof(info->btime), bad); ceph_decode_copy(p, &info->btime, sizeof(info->btime)); ceph_decode_skip_64(p, end, bad); } info->dir_pin = -ENODATA; /* info->snap_btime remains zero */ } Loading
fs/ceph/mds_client.h +1 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ struct ceph_mds_reply_info_in { u64 max_bytes; u64 max_files; s32 dir_pin; struct ceph_timespec btime; struct ceph_timespec snap_btime; }; Loading
fs/ceph/super.h +1 −0 Original line number Diff line number Diff line Loading @@ -384,6 +384,7 @@ struct ceph_inode_info { int i_snap_realm_counter; /* snap realm (if caps) */ struct list_head i_snap_realm_item; struct list_head i_snap_flush_item; struct timespec64 i_btime; struct timespec64 i_snap_btime; struct work_struct i_work; Loading