From bd4897b8263dde8f288d2b8db56c9a3895def609 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Thu, 31 Jan 2013 11:24:35 -0800 Subject: [PATCH] mds: old_inode_t now uses modern encoding Signed-off-by: Sage Weil Signed-off-by: Greg Farnum --- src/mds/mdstypes.cc | 46 +++++++++++++++++++++++++++++++++++++++ src/mds/mdstypes.h | 21 ++++++------------ src/test/encoding/types.h | 2 ++ 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/src/mds/mdstypes.cc b/src/mds/mdstypes.cc index 18c682757ce4c..1cb34f6a1a4d5 100644 --- a/src/mds/mdstypes.cc +++ b/src/mds/mdstypes.cc @@ -392,3 +392,49 @@ void inode_t::generate_test_instances(list& ls) ls.back()->ino = 1; // i am lazy. } + + +/* + * old_inode_t + */ +void old_inode_t::encode(bufferlist& bl) const +{ + ENCODE_START(2, 2, bl); + ::encode(first, bl); + ::encode(inode, bl); + ::encode(xattrs, bl); + ENCODE_FINISH(bl); +} + +void old_inode_t::decode(bufferlist::iterator& bl) +{ + DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl); + ::decode(first, bl); + ::decode(inode, bl); + ::decode(xattrs, bl); + DECODE_FINISH(bl); +} + +void old_inode_t::dump(Formatter *f) const +{ + f->dump_unsigned("first", first); + inode.dump(f); + f->open_object_section("xattrs"); + for (map::const_iterator p = xattrs.begin(); p != xattrs.end(); ++p) { + string v(p->second.c_str(), p->second.length()); + f->dump_string(p->first.c_str(), v); + } + f->close_section(); +} + +void old_inode_t::generate_test_instances(list& ls) +{ + ls.push_back(new old_inode_t); + ls.push_back(new old_inode_t); + ls.back()->first = 2; + list ils; + inode_t::generate_test_instances(ils); + ls.back()->inode = *ils.back(); + ls.back()->xattrs["user.foo"] = buffer::copy("asdf", 4); + ls.back()->xattrs["user.unprintable"] = buffer::copy("\000\001\002", 3); +} diff --git a/src/mds/mdstypes.h b/src/mds/mdstypes.h index b26e312f6d025..d0e704023340a 100644 --- a/src/mds/mdstypes.h +++ b/src/mds/mdstypes.h @@ -434,25 +434,18 @@ struct inode_t { WRITE_CLASS_ENCODER(inode_t) +/* + * old_inode_t + */ struct old_inode_t { snapid_t first; inode_t inode; map xattrs; - void encode(bufferlist& bl) const { - __u8 struct_v = 1; - ::encode(struct_v, bl); - ::encode(first, bl); - ::encode(inode, bl); - ::encode(xattrs, bl); - } - void decode(bufferlist::iterator& bl) { - __u8 struct_v; - ::decode(struct_v, bl); - ::decode(first, bl); - ::decode(inode, bl); - ::decode(xattrs, bl); - } + void encode(bufferlist &bl) const; + void decode(bufferlist::iterator& bl); + void dump(Formatter *f) const; + static void generate_test_instances(list& ls); }; WRITE_CLASS_ENCODER(old_inode_t) diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index ea6765f7f3fc5..47179f30f21b5 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -102,6 +102,8 @@ TYPE(frag_info_t) TYPE(nest_info_t) TYPE(client_writeable_range_t) TYPE(inode_t) +TYPE(old_inode_t) + #ifdef WITH_RADOSGW -- 2.39.5