]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: rename_rollback more modernization for dencoder
authorGreg Farnum <greg@inktank.com>
Mon, 4 Feb 2013 02:45:15 +0000 (18:45 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 8 Feb 2013 21:17:53 +0000 (13:17 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/events/ESlaveUpdate.h
src/mds/journal.cc
src/test/encoding/types.h

index db5ccac537e3be97077e902176155a130235fca9..77dcd28413a90bc45b10f78032623fb2e2a74794 100644 (file)
@@ -70,30 +70,10 @@ struct rename_rollback {
     char remote_d_type;
     utime_t old_ctime;
     
-    void encode(bufferlist &bl) const {
-      ENCODE_START(2, 2, bl);
-      ::encode(dirfrag, bl);
-      ::encode(dirfrag_old_mtime, bl);
-      ::encode(dirfrag_old_rctime, bl);
-      ::encode(ino, bl);
-      ::encode(remote_ino, bl);
-      ::encode(dname, bl);
-      ::encode(remote_d_type, bl);
-      ::encode(old_ctime, bl);
-      ENCODE_FINISH(bl);
-    }
-    void decode(bufferlist::iterator &bl) {
-      DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
-      ::decode(dirfrag, bl);
-      ::decode(dirfrag_old_mtime, bl);
-      ::decode(dirfrag_old_rctime, bl);
-      ::decode(ino, bl);
-      ::decode(remote_ino, bl);
-      ::decode(dname, bl);
-      ::decode(remote_d_type, bl);
-      ::decode(old_ctime, bl);
-      DECODE_FINISH(bl);
-    }
+    void encode(bufferlist& bl) const;
+    void decode(bufferlist::iterator& bl);
+    void dump(Formatter *f) const;
+    static void generate_test_instances(list<drec*>& ls);
   };
   WRITE_CLASS_MEMBER_ENCODER(drec)
 
@@ -102,24 +82,10 @@ struct rename_rollback {
   drec stray; // we know this is null, but we want dname, old mtime/rctime
   utime_t ctime;
 
-  void encode(bufferlist &bl) const {
-    ENCODE_START(2, 2, bl);
-    ::encode(reqid, bl);
-    encode(orig_src, bl);
-    encode(orig_dest, bl);
-    encode(stray, bl);
-    ::encode(ctime, bl);
-    ENCODE_FINISH(bl);
- }
-  void decode(bufferlist::iterator &bl) {
-    DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
-    ::decode(reqid, bl);
-    decode(orig_src, bl);
-    decode(orig_dest, bl);
-    decode(stray, bl);
-    ::decode(ctime, bl);
-    DECODE_FINISH(bl);
-  }
+  void encode(bufferlist& bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<rename_rollback*>& ls);
 };
 WRITE_CLASS_ENCODER(rename_rollback)
 
index bbbc3014611ed51ccf91b7dd9d597a4e6bb84852..edd15b78845fa56dcbde780355a6512c378e9829 100644 (file)
@@ -1808,6 +1808,108 @@ void rmdir_rollback::generate_test_instances(list<rmdir_rollback*>& ls)
   ls.push_back(new rmdir_rollback());
 }
 
+void rename_rollback::drec::encode(bufferlist &bl) const
+{
+  ENCODE_START(2, 2, bl);
+  ::encode(dirfrag, bl);
+  ::encode(dirfrag_old_mtime, bl);
+  ::encode(dirfrag_old_rctime, bl);
+  ::encode(ino, bl);
+  ::encode(remote_ino, bl);
+  ::encode(dname, bl);
+  ::encode(remote_d_type, bl);
+  ::encode(old_ctime, bl);
+  ENCODE_FINISH(bl);
+}
+
+void rename_rollback::drec::decode(bufferlist::iterator &bl)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
+  ::decode(dirfrag, bl);
+  ::decode(dirfrag_old_mtime, bl);
+  ::decode(dirfrag_old_rctime, bl);
+  ::decode(ino, bl);
+  ::decode(remote_ino, bl);
+  ::decode(dname, bl);
+  ::decode(remote_d_type, bl);
+  ::decode(old_ctime, bl);
+  DECODE_FINISH(bl);
+}
+
+void rename_rollback::drec::dump(Formatter *f) const
+{
+  f->dump_stream("directory fragment") << dirfrag;
+  f->dump_stream("directory old mtime") << dirfrag_old_mtime;
+  f->dump_stream("directory old rctime") << dirfrag_old_rctime;
+  f->dump_int("ino", ino);
+  f->dump_int("remote ino", remote_ino);
+  f->dump_string("dname", dname);
+  uint32_t type = DTTOIF(remote_d_type) & S_IFMT; // convert to type entries
+  string type_string;
+  switch(type) {
+  case S_IFREG:
+    type_string = "file"; break;
+  case S_IFLNK:
+    type_string = "symlink"; break;
+  case S_IFDIR:
+    type_string = "directory"; break;
+  default:
+    assert (0 == "unknown d_type!");
+  }
+  f->dump_string("remote dtype", type_string);
+  f->dump_stream("old ctime") << old_ctime;
+}
+
+void rename_rollback::drec::generate_test_instances(list<drec*>& ls)
+{
+  ls.push_back(new drec());
+  ls.back()->remote_d_type = IFTODT(S_IFREG);
+}
+
+void rename_rollback::encode(bufferlist &bl) const
+{
+  ENCODE_START(2, 2, bl);
+  ::encode(reqid, bl);
+  encode(orig_src, bl);
+  encode(orig_dest, bl);
+  encode(stray, bl);
+  ::encode(ctime, bl);
+  ENCODE_FINISH(bl);
+}
+
+void rename_rollback::decode(bufferlist::iterator &bl)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
+  ::decode(reqid, bl);
+  decode(orig_src, bl);
+  decode(orig_dest, bl);
+  decode(stray, bl);
+  ::decode(ctime, bl);
+  DECODE_FINISH(bl);
+}
+
+void rename_rollback::dump(Formatter *f) const
+{
+  f->dump_stream("request id") << reqid;
+  f->open_object_section("original src drec");
+  orig_src.dump(f);
+  f->close_section(); // original src drec
+  f->open_object_section("original dest drec");
+  orig_dest.dump(f);
+  f->close_section(); // original dest drec
+  f->open_object_section("stray drec");
+  stray.dump(f);
+  f->close_section(); // stray drec
+  f->dump_stream("ctime") << ctime;
+}
+
+void rename_rollback::generate_test_instances(list<rename_rollback*>& ls)
+{
+  ls.push_back(new rename_rollback());
+  ls.back()->orig_src.remote_d_type = IFTODT(S_IFREG);
+  ls.back()->orig_dest.remote_d_type = IFTODT(S_IFREG);
+  ls.back()->stray.remote_d_type = IFTODT(S_IFREG);
+}
 
 void ESlaveUpdate::replay(MDS *mds)
 {
index 00a9d090e7305e26ee01c71f6bba41c3caa47a1f..507189cb9a95e0273395d3fbff24a624e7053dd8 100644 (file)
@@ -150,6 +150,8 @@ TYPE(ESessions)
 #include "mds/events/ESlaveUpdate.h"
 TYPE(link_rollback)
 TYPE(rmdir_rollback)
+TYPE(rename_rollback::drec)
+TYPE(rename_rollback)
 
 #ifdef WITH_RADOSGW