]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
client: support getting ceph.dir.rsnaps vxattr
authorYanhu Cao <gmayyyha@gmail.com>
Fri, 28 Aug 2020 01:49:20 +0000 (09:49 +0800)
committerYanhu Cao <gmayyyha@gmail.com>
Fri, 28 Aug 2020 01:49:20 +0000 (09:49 +0800)
Fixes: https://tracker.ceph.com/issues/47168
Signed-off-by: Yanhu Cao <gmayyyha@gmail.com>
src/client/Client.cc
src/client/Client.h
src/mds/CInode.cc
src/messages/MClientReply.h

index d4286a413982013d6851b8ae3359939818074f42..1ff5cd731e3774ce4dbf5da74833cd7416d583e3 100755 (executable)
@@ -12163,6 +12163,10 @@ size_t Client::_vxattrcb_dir_rsubdirs(Inode *in, char *val, size_t size)
 {
   return snprintf(val, size, "%llu", (unsigned long long)in->rstat.rsubdirs);
 }
+size_t Client::_vxattrcb_dir_rsnaps(Inode *in, char *val, size_t size)
+{
+  return snprintf(val, size, "%llu", (unsigned long long)in->rstat.rsnaps);
+}
 size_t Client::_vxattrcb_dir_rbytes(Inode *in, char *val, size_t size)
 {
   return snprintf(val, size, "%llu", (unsigned long long)in->rstat.rbytes);
@@ -12248,6 +12252,7 @@ const Client::VXattr Client::_dir_vxattrs[] = {
   XATTR_NAME_CEPH2(dir, rentries, VXATTR_RSTAT),
   XATTR_NAME_CEPH2(dir, rfiles, VXATTR_RSTAT),
   XATTR_NAME_CEPH2(dir, rsubdirs, VXATTR_RSTAT),
+  XATTR_NAME_CEPH2(dir, rsnaps, VXATTR_RSTAT),
   XATTR_NAME_CEPH2(dir, rbytes, VXATTR_RSTAT),
   XATTR_NAME_CEPH2(dir, rctime, VXATTR_RSTAT),
   {
index 43af41c4e686a81fc43f4ddfc0006d938f9cdef1..b32241490318a9586417ab3ed40cfecc56f03010 100644 (file)
@@ -1282,6 +1282,7 @@ private:
   size_t _vxattrcb_dir_rentries(Inode *in, char *val, size_t size);
   size_t _vxattrcb_dir_rfiles(Inode *in, char *val, size_t size);
   size_t _vxattrcb_dir_rsubdirs(Inode *in, char *val, size_t size);
+  size_t _vxattrcb_dir_rsnaps(Inode *in, char *val, size_t size);
   size_t _vxattrcb_dir_rbytes(Inode *in, char *val, size_t size);
   size_t _vxattrcb_dir_rctime(Inode *in, char *val, size_t size);
 
index 69cd3bdab0198524077d2e5d331a7addd7c8a458..55464e25649e6948f66cae0d6dd75438f33fc7d3 100644 (file)
@@ -3994,7 +3994,7 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
    * note: encoding matches MClientReply::InodeStat
    */
   if (session->info.has_feature(CEPHFS_FEATURE_REPLY_ENCODING)) {
-    ENCODE_START(3, 1, bl);
+    ENCODE_START(4, 1, bl);
     encode(oi->ino, bl);
     encode(snapid, bl);
     encode(oi->rdev, bl);
@@ -4037,6 +4037,7 @@ int CInode::encode_inodestat(bufferlist& bl, Session *session,
     encode(any_i->change_attr, bl);
     encode(file_i->export_pin, bl);
     encode(snap_btime, bl);
+    encode(file_i->rstat.rsnaps, bl);
     ENCODE_FINISH(bl);
   }
   else {
index fc7911e5e3e6b6b1008d46e24be53d2793832dc3..49304f9ce159a2424eec534afbfc402b7f327bd2 100644 (file)
@@ -145,7 +145,7 @@ struct InodeStat {
   void decode(ceph::buffer::list::const_iterator &p, const uint64_t features) {
     using ceph::decode;
     if (features == (uint64_t)-1) {
-      DECODE_START(3, p);
+      DECODE_START(4, p);
       decode(vino.ino, p);
       decode(vino.snapid, p);
       decode(rdev, p);
@@ -193,6 +193,9 @@ struct InodeStat {
       if (struct_v >= 3) {
         decode(snap_btime, p);
       } // else remains zero
+      if (struct_v >= 4) {
+        decode(rstat.rsnaps, p);
+      } // else remains zero
       DECODE_FINISH(p);
     }
     else {