On Thu, 2022-03-10 at 09:34 -0500, Venky Shankar wrote: > `rctime' has been a pain point in cephfs due to its buggy > nature - inconsistent values reported and those sorts. > Fixing rctime is non-trivial needing an overall redesign > of the entire nested statistics infrastructure. > > As a workaround, PR > > http://github.com/ceph/ceph/pull/37938 > > allows this extended attribute to be manually set. This allows > users to "fixup" inconsistency rctime values. While this sounds > messy, its probably the wisest approach allowing users/scripts > to workaround buggy rctime values. > > The above PR enables Ceph MDS to allow manually setting > rctime extended attribute with the corresponding user-land > changes. We may as well allow the same to be done via kclient > for parity. > > Signed-off-by: Venky Shankar <vshankar@xxxxxxxxxx> > --- > fs/ceph/xattr.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c > index afec84088471..8c2dc2c762a4 100644 > --- a/fs/ceph/xattr.c > +++ b/fs/ceph/xattr.c > @@ -366,6 +366,14 @@ static ssize_t ceph_vxattrcb_auth_mds(struct ceph_inode_info *ci, > } > #define XATTR_RSTAT_FIELD(_type, _name) \ > XATTR_NAME_CEPH(_type, _name, VXATTR_FLAG_RSTAT) > +#define XATTR_RSTAT_FIELD_UPDATABLE(_type, _name) \ > + { \ > + .name = CEPH_XATTR_NAME(_type, _name), \ > + .name_size = sizeof (CEPH_XATTR_NAME(_type, _name)), \ > + .getxattr_cb = ceph_vxattrcb_ ## _type ## _ ## _name, \ > + .exists_cb = NULL, \ > + .flags = VXATTR_FLAG_RSTAT, \ > + } > #define XATTR_LAYOUT_FIELD(_type, _name, _field) \ > { \ > .name = CEPH_XATTR_NAME2(_type, _name, _field), \ > @@ -404,7 +412,7 @@ static struct ceph_vxattr ceph_dir_vxattrs[] = { > XATTR_RSTAT_FIELD(dir, rsubdirs), > XATTR_RSTAT_FIELD(dir, rsnaps), > XATTR_RSTAT_FIELD(dir, rbytes), > - XATTR_RSTAT_FIELD(dir, rctime), > + XATTR_RSTAT_FIELD_UPDATABLE(dir, rctime), > { > .name = "ceph.dir.pin", > .name_size = sizeof("ceph.dir.pin"), Thanks Venky, looks good. Merged into testing branch. -- Jeff Layton <jlayton@xxxxxxxxxx>