]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: session_info_t now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Thu, 17 Jan 2013 18:31:22 +0000 (10:31 -0800)
committerGreg Farnum <greg@inktank.com>
Tue, 5 Feb 2013 21:29:05 +0000 (13:29 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/mdstypes.cc
src/test/encoding/types.h

index b562284a8a7c0cdda257dedfc039cac22170f8e3..33a16b6afb451112849ac4a0c59b179f2a0897dd 100644 (file)
@@ -511,22 +511,68 @@ void fnode_t::generate_test_instances(list<fnode_t*>& ls)
  */
 void session_info_t::encode(bufferlist& bl) const
 {
-  __u8 v = 1;
-  ::encode(v, bl);
+  ENCODE_START(2, 2, bl);
   ::encode(inst, bl);
   ::encode(completed_requests, bl);
   ::encode(prealloc_inos, bl);   // hacky, see below.
   ::encode(used_inos, bl);
+  ENCODE_FINISH(bl);
 }
 
 void session_info_t::decode(bufferlist::iterator& p)
 {
-  __u8 v;
-  ::decode(v, p);
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, p);
   ::decode(inst, p);
   ::decode(completed_requests, p);
   ::decode(prealloc_inos, p);
   ::decode(used_inos, p);
   prealloc_inos.insert(used_inos);
   used_inos.clear();
+  DECODE_FINISH(p);
+}
+
+void session_info_t::dump(Formatter *f) const
+{
+  f->dump_stream("inst") << inst;
+
+  f->open_array_section("completed_requests");
+  for (set<tid_t>::const_iterator p = completed_requests.begin();
+       p != completed_requests.end();
+       ++p)
+    f->dump_unsigned("tid", *p);
+  f->close_section();
+
+  f->open_array_section("prealloc_inos");
+  for (interval_set<inodeno_t>::const_iterator p = prealloc_inos.begin();
+       p != prealloc_inos.end();
+       ++p) {
+    f->open_object_section("ino_range");
+    f->dump_unsigned("start", p.get_start());
+    f->dump_unsigned("length", p.get_len());
+    f->close_section();
+  }
+  f->close_section();
+
+  f->open_array_section("used_inos");
+  for (interval_set<inodeno_t>::const_iterator p = prealloc_inos.begin();
+       p != prealloc_inos.end();
+       ++p) {
+    f->open_object_section("ino_range");
+    f->dump_unsigned("start", p.get_start());
+    f->dump_unsigned("length", p.get_len());
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void session_info_t::generate_test_instances(list<session_info_t*>& ls)
+{
+  ls.push_back(new session_info_t);
+  ls.push_back(new session_info_t);
+  ls.back()->inst = entity_inst_t(entity_name_t::MDS(12), entity_addr_t());
+  ls.back()->completed_requests.insert(234);
+  ls.back()->completed_requests.insert(237);
+  ls.back()->prealloc_inos.insert(333, 12);
+  ls.back()->prealloc_inos.insert(377, 112);
+  // we can't add used inos; they're cleared on decode
 }
index 37a767b65f9f3332aa0725c12606d40c9dc750f6..2aa52001239bd21667db27840cf5a94007a3a300 100644 (file)
@@ -104,6 +104,7 @@ TYPE(client_writeable_range_t)
 TYPE(inode_t)
 TYPE(old_inode_t)
 TYPE(fnode_t)
+TYPE(session_info_t)
 
 #ifdef WITH_RADOSGW