]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: Capability (and sub-structs) now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Tue, 5 Feb 2013 19:37:55 +0000 (11:37 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 8 Feb 2013 21:17:46 +0000 (13:17 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/Capability.cc
src/mds/Capability.h
src/test/encoding/types.h

index 0491d52db5e932115261d60c92f03604f48a5308..f1394308d9be1b04bf1b9ff65156be84174be863 100644 (file)
 
 void Capability::Export::encode(bufferlist &bl) const
 {
-  __u8 struct_v = 1;
-  ::encode(struct_v, bl);
+  ENCODE_START(2, 2, bl);
   ::encode(wanted, bl);
   ::encode(issued, bl);
   ::encode(pending, bl);
   ::encode(client_follows, bl);
   ::encode(mseq, bl);
   ::encode(last_issue_stamp, bl);
+  ENCODE_FINISH(bl);
 }
 
 void Capability::Export::decode(bufferlist::iterator &p)
 {
-  __u8 struct_v;
-  ::decode(struct_v, p);
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, p);
   ::decode(wanted, p);
   ::decode(issued, p);
   ::decode(pending, p);
   ::decode(client_follows, p);
   ::decode(mseq, p);
   ::decode(last_issue_stamp, p);
+  DECODE_FINISH(p);
+}
+
+void Capability::Export::dump(Formatter *f) const
+{
+  f->dump_unsigned("wanted", wanted);
+  f->dump_unsigned("issued", issued);
+  f->dump_unsigned("pending", pending);
+  f->dump_unsigned("client_follows", client_follows);
+  f->dump_unsigned("migrate_seq", mseq);
+  f->dump_stream("last_issue_stamp") << last_issue_stamp;
+}
+
+void Capability::Export::generate_test_instances(list<Capability::Export*>& ls)
+{
+  ls.push_back(new Export);
+  ls.push_back(new Export);
+  ls.back()->wanted = 1;
+  ls.back()->issued = 2;
+  ls.back()->pending = 3;
+  ls.back()->client_follows = 4;
+  ls.back()->mseq = 5;
+  ls.back()->last_issue_stamp = utime_t(6, 7);
 }
 
 
@@ -52,20 +74,36 @@ void Capability::Export::decode(bufferlist::iterator &p)
 
 void Capability::revoke_info::encode(bufferlist& bl) const
 {
-  __u8 struct_v = 1;
-  ::encode(struct_v, bl);
+  ENCODE_START(2, 2, bl)
   ::encode(before, bl);
   ::encode(seq, bl);
   ::encode(last_issue, bl);
+  ENCODE_FINISH(bl);
 }
 
 void Capability::revoke_info::decode(bufferlist::iterator& bl)
 {
-  __u8 struct_v;
-  ::decode(struct_v, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl);
   ::decode(before, bl);
   ::decode(seq, bl);
   ::decode(last_issue, bl);
+  DECODE_FINISH(bl);
+}
+
+void Capability::revoke_info::dump(Formatter *f) const
+{
+  f->dump_unsigned("before", before);
+  f->dump_unsigned("seq", seq);
+  f->dump_unsigned("last_issue", last_issue);
+}
+
+void Capability::revoke_info::generate_test_instances(list<Capability::revoke_info*>& ls)
+{
+  ls.push_back(new revoke_info);
+  ls.push_back(new revoke_info);
+  ls.back()->before = 1;
+  ls.back()->seq = 2;
+  ls.back()->last_issue = 3;
 }
 
 
@@ -75,26 +113,60 @@ void Capability::revoke_info::decode(bufferlist::iterator& bl)
 
 void Capability::encode(bufferlist& bl) const
 {
-  __u8 struct_v = 1;
-  ::encode(struct_v, bl);
+  ENCODE_START(2, 2, bl)
   ::encode(last_sent, bl);
   ::encode(last_issue_stamp, bl);
 
   ::encode(_wanted, bl);
   ::encode(_pending, bl);
   ::encode(_revokes, bl);
+  ENCODE_FINISH(bl);
 }
 
 void Capability::decode(bufferlist::iterator &bl)
 {
-  __u8 struct_v;
-  ::decode(struct_v, bl);
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl)
   ::decode(last_sent, bl);
   ::decode(last_issue_stamp, bl);
 
   ::decode(_wanted, bl);
   ::decode(_pending, bl);
   ::decode(_revokes, bl);
+  DECODE_FINISH(bl);
   
   _calc_issued();
 }
+
+void Capability::dump(Formatter *f) const
+{
+  f->dump_unsigned("last_sent", last_sent);
+  f->dump_unsigned("last_issue_stamp", last_issue_stamp);
+  f->dump_unsigned("wanted", _wanted);
+  f->dump_unsigned("pending", _pending);
+
+  f->open_array_section("revokes");
+  for (list<revoke_info>::const_iterator p = _revokes.begin(); p != _revokes.end(); ++p) {
+    f->open_object_section("revoke");
+    p->dump(f);
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void Capability::generate_test_instances(list<Capability*>& ls)
+{
+  ls.push_back(new Capability);
+  ls.push_back(new Capability);
+  ls.back()->last_sent = 11;
+  ls.back()->last_issue_stamp = utime_t(12, 13);
+  ls.back()->_wanted = 14;
+  ls.back()->_pending = 15;
+  ls.back()->_revokes.push_back(revoke_info());
+  ls.back()->_revokes.back().before = 16;
+  ls.back()->_revokes.back().seq = 17;
+  ls.back()->_revokes.back().last_issue = 18;
+  ls.back()->_revokes.push_back(revoke_info());
+  ls.back()->_revokes.back().before = 19;
+  ls.back()->_revokes.back().seq = 20;
+  ls.back()->_revokes.back().last_issue = 21;
+}
index 4008a8359785819fb8e40c67296ca09c71a3ca9c..946afdc02b937940ebb21efd898914d1f9c263c1 100644 (file)
@@ -89,6 +89,8 @@ public:
       wanted(w), issued(i), pending(p), client_follows(cf), mseq(s), last_issue_stamp(lis) {}
     void encode(bufferlist &bl) const;
     void decode(bufferlist::iterator &p);
+    void dump(Formatter *f) const;
+    static void generate_test_instances(list<Export*>& ls);
   };
 
 private:
@@ -113,6 +115,8 @@ public:
     revoke_info(__u32 b, ceph_seq_t s, ceph_seq_t li) : before(b), seq(s), last_issue(li) {}
     void encode(bufferlist& bl) const;
     void decode(bufferlist::iterator& bl);
+    void dump(Formatter *f) const;
+    static void generate_test_instances(list<revoke_info*>& ls);
   };
 private:
   __u32 _pending, _issued;
@@ -207,7 +211,7 @@ public:
   xlist<Capability*>::item item_session_caps;
   xlist<Capability*>::item item_snaprealm_caps;
 
-  Capability(CInode *i, uint64_t id, client_t c) : 
+  Capability(CInode *i = NULL, uint64_t id = 0, client_t c = 0) : 
     inode(i), client(c),
     cap_id(id),
     _wanted(0),
@@ -304,6 +308,8 @@ public:
   // serializers
   void encode(bufferlist &bl) const;
   void decode(bufferlist::iterator &bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<Capability*>& ls);
   
 };
 
index 423d8472eea98e8d0fda6cbd4362b9e176155277..765b7d0a49f0fea9476286555a4274e206570507 100644 (file)
@@ -113,6 +113,9 @@ TYPE(mds_table_pending_t)
 TYPE_FEATUREFUL(MDSMap)
 TYPE_FEATUREFUL(MDSMap::mds_info_t)
 
+#include "mds/Capability.h"
+TYPE(Capability)
+
 #ifdef WITH_RADOSGW
 
 #include "rgw/rgw_rados.h"