From e35b89ecdc7265cd892eb1be01fdf537e87714e1 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Tue, 15 Jan 2013 17:44:30 -0800 Subject: [PATCH] mds: Anchor now uses modern encoding Signed-off-by: Sage Weil Signed-off-by: Greg Farnum --- src/Makefile.am | 1 + src/mds/Anchor.cc | 64 +++++++++++++++++++++++++++++++++++++++ src/mds/Anchor.h | 31 +++++-------------- src/test/encoding/types.h | 3 ++ 4 files changed, 76 insertions(+), 23 deletions(-) create mode 100644 src/mds/Anchor.cc diff --git a/src/Makefile.am b/src/Makefile.am index 04234229236..d4f52d073fc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1341,6 +1341,7 @@ libmon_a_CXXFLAGS= ${AM_CXXFLAGS} noinst_LIBRARIES += libmon.a libmds_a_SOURCES = \ + mds/Anchor.cc \ mds/Dumper.cc \ mds/Resetter.cc \ mds/MDS.cc \ diff --git a/src/mds/Anchor.cc b/src/mds/Anchor.cc new file mode 100644 index 00000000000..e24c5f1e024 --- /dev/null +++ b/src/mds/Anchor.cc @@ -0,0 +1,64 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2004-2006 Sage Weil + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + * + */ + +#include "mds/Anchor.h" + +#include "common/Formatter.h" + +void Anchor::encode(bufferlist &bl) const +{ + ENCODE_START(2, 2, bl); + ::encode(ino, bl); + ::encode(dirino, bl); + ::encode(dn_hash, bl); + ::encode(nref, bl); + ::encode(updated, bl); + ENCODE_FINISH(bl); +} + +void Anchor::decode(bufferlist::iterator &bl) +{ + DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl); + ::decode(ino, bl); + ::decode(dirino, bl); + ::decode(dn_hash, bl); + ::decode(nref, bl); + ::decode(updated, bl); + DECODE_FINISH(bl); +} + +void Anchor::dump(Formatter *f) const +{ + f->dump_unsigned("ino", ino); + f->dump_unsigned("dirino", dirino); + f->dump_unsigned("dn_hash", dn_hash); + f->dump_unsigned("num_ref", nref); + f->dump_unsigned("updated", updated); +} + +void Anchor::generate_test_instances(list& ls) +{ + ls.push_back(new Anchor); + ls.push_back(new Anchor); + ls.back()->ino = 1; + ls.back()->dirino = 2; + ls.back()->dn_hash = 3; + ls.back()->nref = 4; + ls.back()->updated = 5; +} + +ostream& operator<<(ostream& out, const Anchor &a) +{ + return out << "a(" << a.ino << " " << a.dirino << "/" << a.dn_hash << " " << a.nref << " v" << a.updated << ")"; +} diff --git a/src/mds/Anchor.h b/src/mds/Anchor.h index 52e71f9ea68..e8a6a645214 100644 --- a/src/mds/Anchor.h +++ b/src/mds/Anchor.h @@ -25,7 +25,9 @@ using std::string; // identifies a anchor table mutation - +namespace ceph { + class Formatter; +} // anchor type @@ -41,30 +43,13 @@ public: Anchor(inodeno_t i, inodeno_t di, __u32 hash, int nr, version_t u) : ino(i), dirino(di), dn_hash(hash), nref(nr), updated(u) { } - void encode(bufferlist &bl) const { - __u8 struct_v = 1; - ::encode(struct_v, bl); - ::encode(ino, bl); - ::encode(dirino, bl); - ::encode(dn_hash, bl); - ::encode(nref, bl); - ::encode(updated, bl); - } - void decode(bufferlist::iterator &bl) { - __u8 struct_v; - ::decode(struct_v, bl); - ::decode(ino, bl); - ::decode(dirino, bl); - ::decode(dn_hash, bl); - ::decode(nref, bl); - ::decode(updated, 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(Anchor) -inline ostream& operator<<(ostream& out, const Anchor &a) -{ - return out << "a(" << a.ino << " " << a.dirino << "/" << a.dn_hash << " " << a.nref << " v" << a.updated << ")"; -} +ostream& operator<<(ostream& out, const Anchor &a); #endif diff --git a/src/test/encoding/types.h b/src/test/encoding/types.h index e3b7e305140..e3616c1fbad 100644 --- a/src/test/encoding/types.h +++ b/src/test/encoding/types.h @@ -88,6 +88,9 @@ TYPE(MonCaps) TYPE(DBObjectMap::_Header) TYPE(DBObjectMap::State) +#include "mds/Anchor.h" +TYPE(Anchor) + #ifdef WITH_RADOSGW #include "rgw/rgw_rados.h" -- 2.47.3