]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Anchor now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Wed, 16 Jan 2013 01:44:30 +0000 (17:44 -0800)
committerGreg Farnum <greg@inktank.com>
Tue, 5 Feb 2013 21:29:04 +0000 (13:29 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
src/Makefile.am
src/mds/Anchor.cc [new file with mode: 0644]
src/mds/Anchor.h
src/test/encoding/types.h

index 04234229236ac5fb58a068addd73697f3ce9d8e0..d4f52d073fc76eec746fc29ad05184efb1adc1a5 100644 (file)
@@ -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 (file)
index 0000000..e24c5f1
--- /dev/null
@@ -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 <sage@newdream.net>
+ *
+ * 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<Anchor*>& 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 << ")";
+}
index 52e71f9ea68aa441a99730a9a7d009a2978adacc..e8a6a645214b72e37f1efa772dd2173a5d68aff9 100644 (file)
@@ -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<Anchor*>& 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
index e3b7e30514059d062ebc4df53928b4298c530668..e3616c1fbad9eb715b5d6a50bcd0dd40623b03dc 100644 (file)
@@ -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"