]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
ceph-dencoder: simplify decoding/encoding cephfs inode
authorYan, Zheng <zyan@redhat.com>
Wed, 23 Aug 2017 04:13:27 +0000 (12:13 +0800)
committerYan, Zheng <zyan@redhat.com>
Wed, 23 Aug 2017 04:19:14 +0000 (12:19 +0800)
With this patch, we can dump inode embeded in dirfrag by:

rados -p cephfs_metadata getomapval 1.00000000 test_head /tmp/inode
ceph-dencoder type InodeStoreBare skip 9 import /tmp/inode decode dump_json

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/CInode.cc
src/mds/CInode.h
src/test/encoding/types.h

index 149660b65b1ac9ed84a46007beeb3943975884de..3b0d6ba4a164188515fc479a3e2028645e7257d5 100644 (file)
@@ -3775,6 +3775,14 @@ void InodeStore::generate_test_instances(list<InodeStore*> &ls)
   ls.push_back(populated);
 }
 
+void InodeStoreBare::generate_test_instances(list<InodeStoreBare*> &ls)
+{
+  InodeStoreBare *populated = new InodeStoreBare;
+  populated->inode.ino = 0xdeadbeef;
+  populated->symlink = "rhubarb";
+  ls.push_back(populated);
+}
+
 void CInode::validate_disk_state(CInode::validated_data *results,
                                  MDSInternalContext *fin)
 {
index 030c86e62a14539430d8771c265c1139d655ad43..d5cf7d3fc15a13e42ba27e9e522863770f972b33 100644 (file)
@@ -127,6 +127,19 @@ public:
 };
 WRITE_CLASS_ENCODER_FEATURES(InodeStore)
 
+// just for ceph-dencoder
+class InodeStoreBare : public InodeStore {
+public:
+  void encode(bufferlist &bl, uint64_t features) const {
+    InodeStore::encode_bare(bl, features);
+  }
+  void decode(bufferlist::iterator &bl) {
+    InodeStore::decode_bare(bl);
+  }
+  static void generate_test_instances(std::list<InodeStoreBare*>& ls);
+};
+WRITE_CLASS_ENCODER_FEATURES(InodeStoreBare)
+
 // cached inode wrapper
 class CInode : public MDSCacheObject, public InodeStoreBase, public Counter<CInode> {
  public:
index 2a5db3e3c7e8f45978a03508a6ce2c0115b4c7ca..3668e17a7e0fd07082e2ea571f771455c503e394 100644 (file)
@@ -211,6 +211,7 @@ TYPE_FEATUREFUL(file_layout_t)
 
 #include "mds/CInode.h"
 TYPE_FEATUREFUL(InodeStore)
+TYPE_FEATUREFUL(InodeStoreBare)
 
 #include "mds/MDSMap.h"
 TYPE_FEATUREFUL(MDSMap)