From 0b802159615cec004ca026da9a34226eb039baba Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 23 Aug 2017 12:13:27 +0800 Subject: [PATCH] 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" --- src/mds/CInode.cc | 8 ++++++++ src/mds/CInode.h | 13 +++++++++++++ src/test/encoding/types.h | 1 + 3 files changed, 22 insertions(+) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 149660b65b1a..3b0d6ba4a164 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 030c86e62a14..d5cf7d3fc15a 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 2a5db3e3c7e8..3668e17a7e0f 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) -- 2.47.3