Skip to content

Commit

Permalink
client: add ceph.snap.btime vxattr
Browse files Browse the repository at this point in the history
The ceph.snap.btime vxattr carries the snapshot creation time for files
and directories residing within a snapshot.

Fixes: https://tracker.ceph.com/issues/38838
Signed-off-by: David Disseldorp <ddiss@suse.de>
(cherry picked from commit a85c1a2)
  • Loading branch information
ddiss authored and Vicente-Cheng committed May 1, 2019
1 parent 395960a commit b37148d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/client/Client.cc
Expand Up @@ -11792,6 +11792,18 @@ size_t Client::_vxattrcb_dir_pin(Inode *in, char *val, size_t size)
return snprintf(val, size, "%ld", (long)in->dir_pin);
}

bool Client::_vxattrcb_snap_btime_exists(Inode *in)
{
return !in->snap_btime.is_zero();
}

size_t Client::_vxattrcb_snap_btime(Inode *in, char *val, size_t size)
{
return snprintf(val, size, "%llu.09%lu",
(long long unsigned)in->snap_btime.sec(),
(long unsigned)in->snap_btime.nsec());
}

#define CEPH_XATTR_NAME(_type, _name) "ceph." #_type "." #_name
#define CEPH_XATTR_NAME2(_type, _name, _name2) "ceph." #_type "." #_name "." #_name2

Expand Down Expand Up @@ -11872,6 +11884,14 @@ const Client::VXattr Client::_dir_vxattrs[] = {
exists_cb: &Client::_vxattrcb_dir_pin_exists,
flags: 0,
},
{
name: "ceph.snap.btime",
getxattr_cb: &Client::_vxattrcb_snap_btime,
readonly: true,
hidden: false,
exists_cb: &Client::_vxattrcb_snap_btime_exists,
flags: 0,
},
{ name: "" } /* Required table terminator */
};

Expand All @@ -11889,6 +11909,14 @@ const Client::VXattr Client::_file_vxattrs[] = {
XATTR_LAYOUT_FIELD(file, layout, object_size),
XATTR_LAYOUT_FIELD(file, layout, pool),
XATTR_LAYOUT_FIELD(file, layout, pool_namespace),
{
name: "ceph.snap.btime",
getxattr_cb: &Client::_vxattrcb_snap_btime,
readonly: true,
hidden: false,
exists_cb: &Client::_vxattrcb_snap_btime_exists,
flags: 0,
},
{ name: "" } /* Required table terminator */
};

Expand Down
3 changes: 3 additions & 0 deletions src/client/Client.h
Expand Up @@ -1165,6 +1165,9 @@ class Client : public Dispatcher, public md_config_obs_t {
bool _vxattrcb_dir_pin_exists(Inode *in);
size_t _vxattrcb_dir_pin(Inode *in, char *val, size_t size);

bool _vxattrcb_snap_btime_exists(Inode *in);
size_t _vxattrcb_snap_btime(Inode *in, char *val, size_t size);

size_t _vxattrs_calcu_name_size(const VXattr *vxattrs);

static const VXattr *_get_vxattrs(Inode *in);
Expand Down

0 comments on commit b37148d

Please sign in to comment.