From: Yan, Zheng Date: Wed, 23 Aug 2017 04:13:27 +0000 (+0800) Subject: ceph-dencoder: simplify decoding/encoding cephfs inode X-Git-Tag: v13.0.1~1040^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0b802159615cec004ca026da9a34226eb039baba;p=ceph-ci.git ceph-dencoder: simplify decoding/encoding cephfs inode 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" --- diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 149660b65b1..3b0d6ba4a16 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -3775,6 +3775,14 @@ void InodeStore::generate_test_instances(list &ls) ls.push_back(populated); } +void InodeStoreBare::generate_test_instances(list &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) { diff --git a/src/mds/CInode.h b/src/mds/CInode.h index 030c86e62a1..d5cf7d3fc15 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -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& ls); +}; +WRITE_CLASS_ENCODER_FEATURES(InodeStoreBare) + // cached inode wrapper class CInode : public MDSCacheObject, public InodeStoreBase, public Counter { public: diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index 2a5db3e3c7e..3668e17a7e0 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -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)