]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
move SnapContext, SnapRealmInfo to common/snap_types.{h,cc}
authorSage Weil <sage.weil@dreamhost.com>
Mon, 6 Feb 2012 05:51:33 +0000 (21:51 -0800)
committerSage Weil <sage@newdream.net>
Mon, 6 Feb 2012 21:34:24 +0000 (13:34 -0800)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/Makefile.am
src/common/snap_types.cc [new file with mode: 0644]
src/common/snap_types.h [new file with mode: 0644]
src/include/types.h
src/librbd.cc
src/mds/snap.h
src/osd/osd_types.h

index a8cdaadfedd6161813598471b337415baa176041..7e6c2efa749bdfe1ea16421148d48a5020778d7e 100644 (file)
@@ -899,6 +899,7 @@ libcommon_files = \
        common/armor.c \
        common/xattr.c \
        common/safe_io.c \
+       common/snap_types.cc \
        common/str_list.cc \
        common/errno.cc \
        msg/SimpleMessenger.cc \
@@ -1103,6 +1104,7 @@ noinst_HEADERS = \
        common/environment.h\
        common/likely.h\
        common/lockdep.h\
+       common/snap_types.h\
         common/Clock.h\
         common/Cond.h\
         common/ConfUtils.h\
diff --git a/src/common/snap_types.cc b/src/common/snap_types.cc
new file mode 100644 (file)
index 0000000..1500cac
--- /dev/null
@@ -0,0 +1,82 @@
+
+#include "snap_types.h"
+#include "common/Formatter.h"
+
+void SnapRealmInfo::encode(bufferlist& bl) const
+{
+  h.num_snaps = my_snaps.size();
+  h.num_prior_parent_snaps = prior_parent_snaps.size();
+  ::encode(h, bl);
+  ::encode_nohead(my_snaps, bl);
+  ::encode_nohead(prior_parent_snaps, bl);
+}
+
+void SnapRealmInfo::decode(bufferlist::iterator& bl)
+{
+  ::decode(h, bl);
+  ::decode_nohead(h.num_snaps, my_snaps, bl);
+  ::decode_nohead(h.num_prior_parent_snaps, prior_parent_snaps, bl);
+}
+
+void SnapRealmInfo::dump(Formatter *f) const
+{
+  f->dump_unsigned("ino", ino());
+  f->dump_unsigned("parent", parent());
+  f->dump_unsigned("seq", seq());
+  f->dump_unsigned("parent_since", parent_since());
+  f->dump_unsigned("created", created());
+
+  f->open_array_section("snaps");
+  for (vector<snapid_t>::const_iterator p = my_snaps.begin(); p != my_snaps.end(); ++p)
+    f->dump_unsigned("snap", *p);
+  f->close_section();
+
+  f->open_array_section("prior_parent_snaps");
+  for (vector<snapid_t>::const_iterator p = prior_parent_snaps.begin(); p != prior_parent_snaps.end(); ++p)
+    f->dump_unsigned("snap", *p);
+  f->close_section();  
+}
+
+void SnapRealmInfo::generate_test_instances(list<SnapRealmInfo*>& o)
+{
+  o.push_back(new SnapRealmInfo);
+  o.push_back(new SnapRealmInfo(1, 10, 10, 0));
+  o.push_back(new SnapRealmInfo(1, 10, 10, 0));
+  o.back()->my_snaps.push_back(10);
+  o.push_back(new SnapRealmInfo(1, 10, 10, 5));
+  o.back()->my_snaps.push_back(10);
+  o.back()->prior_parent_snaps.push_back(3);
+  o.back()->prior_parent_snaps.push_back(5);
+}
+
+
+// -----
+
+bool SnapContext::is_valid() const
+{
+  // seq is a valid snapid
+  if (seq > CEPH_MAXSNAP)
+    return false;
+  if (!snaps.empty()) {
+    // seq >= snaps[0]
+    if (snaps[0] > seq)
+      return false;
+    // snaps[] is descending
+    snapid_t t = snaps[0];
+    for (unsigned i=1; i<snaps.size(); i++) {
+      if (snaps[i] >= t || t == 0)
+       return false;
+      t = snaps[i];
+    }
+  }
+  return true;
+}
+
+void SnapContext::dump(Formatter *f) const
+{
+  f->dump_unsigned("seq", seq);
+  f->open_array_section("snaps");
+  for (vector<snapid_t>::const_iterator p = snaps.begin(); p != snaps.end(); ++p)
+    f->dump_unsigned("snap", *p);
+  f->close_section();
+}
diff --git a/src/common/snap_types.h b/src/common/snap_types.h
new file mode 100644 (file)
index 0000000..e8e5281
--- /dev/null
@@ -0,0 +1,74 @@
+#ifndef __CEPH_SNAP_TYPES_H
+#define __CEPH_SNAP_TYPES_H
+
+#include "include/types.h"
+
+namespace ceph {
+
+class Formatter;
+}
+struct SnapRealmInfo {
+  mutable ceph_mds_snap_realm h;
+  vector<snapid_t> my_snaps;
+  vector<snapid_t> prior_parent_snaps;  // before parent_since
+
+  SnapRealmInfo() {
+    memset(&h, 0, sizeof(h));
+  }
+  SnapRealmInfo(inodeno_t ino_, snapid_t created_, snapid_t seq_, snapid_t current_parent_since_) {
+    memset(&h, 0, sizeof(h));
+    h.ino = ino_;
+    h.created = created_;
+    h.seq = seq_;
+    h.parent_since = current_parent_since_;
+  }
+  
+  inodeno_t ino() const { return inodeno_t(h.ino); }
+  inodeno_t parent() const { return inodeno_t(h.parent); }
+  snapid_t seq() const { return snapid_t(h.seq); }
+  snapid_t parent_since() const { return snapid_t(h.parent_since); }
+  snapid_t created() const { return snapid_t(h.created); }
+
+  void encode(bufferlist& bl) const;
+  void decode(bufferlist::iterator& bl);
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<SnapRealmInfo*>& o);
+};
+WRITE_CLASS_ENCODER(SnapRealmInfo)
+
+
+struct SnapContext {
+  snapid_t seq;            // 'time' stamp
+  vector<snapid_t> snaps;  // existent snaps, in descending order
+
+  SnapContext() {}
+  SnapContext(snapid_t s, vector<snapid_t>& v) : seq(s), snaps(v) {}    
+
+  bool is_valid() const;
+
+  void clear() {
+    seq = 0;
+    snaps.clear();
+  }
+  bool empty() { return seq == 0; }
+
+  void encode(bufferlist& bl) const {
+    ::encode(seq, bl);
+    ::encode(snaps, bl);
+  }
+  void decode(bufferlist::iterator& bl) {
+    ::decode(seq, bl);
+    ::decode(snaps, bl);
+  }
+  void dump(Formatter *f) const;
+  static void generate_test_instances(list<SnapContext*>& o);
+};
+WRITE_CLASS_ENCODER(SnapContext)
+
+inline ostream& operator<<(ostream& out, const SnapContext& snapc) {
+  return out << snapc.seq << "=" << snapc.snaps;
+}
+
+//}
+
+#endif
index c6d30d1f61679b5b7d55d08d583d84dc27c058f5..bb753163ddf95606b242894db2f374a8f883f1fa 100644 (file)
@@ -348,91 +348,6 @@ static inline bool file_mode_is_readonly(int mode) {
 }
 
 
-struct SnapRealmInfo {
-  mutable ceph_mds_snap_realm h;
-  vector<snapid_t> my_snaps;
-  vector<snapid_t> prior_parent_snaps;  // before parent_since
-
-  SnapRealmInfo() {
-    memset(&h, 0, sizeof(h));
-  }
-  SnapRealmInfo(inodeno_t ino_, snapid_t created_, snapid_t seq_, snapid_t current_parent_since_) {
-    memset(&h, 0, sizeof(h));
-    h.ino = ino_;
-    h.created = created_;
-    h.seq = seq_;
-    h.parent_since = current_parent_since_;
-  }
-  
-  inodeno_t ino() { return inodeno_t(h.ino); }
-  inodeno_t parent() { return inodeno_t(h.parent); }
-  snapid_t seq() { return snapid_t(h.seq); }
-  snapid_t parent_since() { return snapid_t(h.parent_since); }
-  snapid_t created() { return snapid_t(h.created); }
-
-  void encode(bufferlist& bl) const {
-    h.num_snaps = my_snaps.size();
-    h.num_prior_parent_snaps = prior_parent_snaps.size();
-    ::encode(h, bl);
-    ::encode_nohead(my_snaps, bl);
-    ::encode_nohead(prior_parent_snaps, bl);
-  }
-  void decode(bufferlist::iterator& bl) {
-    ::decode(h, bl);
-    ::decode_nohead(h.num_snaps, my_snaps, bl);
-    ::decode_nohead(h.num_prior_parent_snaps, prior_parent_snaps, bl);
-  }
-};
-WRITE_CLASS_ENCODER(SnapRealmInfo)
-
-
-struct SnapContext {
-  snapid_t seq;            // 'time' stamp
-  vector<snapid_t> snaps;  // existent snaps, in descending order
-
-  SnapContext() {}
-  SnapContext(snapid_t s, vector<snapid_t>& v) : seq(s), snaps(v) {}    
-
-  bool is_valid() const {
-    // seq is a valid snapid
-    if (seq > CEPH_MAXSNAP)
-      return false;
-    if (!snaps.empty()) {
-      // seq >= snaps[0]
-      if (snaps[0] > seq)
-       return false;
-      // snaps[] is descending
-      snapid_t t = snaps[0];
-      for (unsigned i=1; i<snaps.size(); i++) {
-       if (snaps[i] >= t || t == 0)
-         return false;
-       t = snaps[i];
-      }
-    }
-    return true;
-  }
-
-  void clear() {
-    seq = 0;
-    snaps.clear();
-  }
-  bool empty() { return seq == 0; }
-
-  void encode(bufferlist& bl) const {
-    ::encode(seq, bl);
-    ::encode(snaps, bl);
-  }
-  void decode(bufferlist::iterator& bl) {
-    ::decode(seq, bl);
-    ::decode(snaps, bl);
-  }
-};
-WRITE_CLASS_ENCODER(SnapContext)
-
-inline ostream& operator<<(ostream& out, const SnapContext& snapc) {
-  return out << snapc.seq << "=" << snapc.snaps;
-}
-
 typedef hobject_t collection_list_handle_t;
 
 // dentries
index fb368d893f6e99fc3d64f24dc75615ac581dc25b..1587b010df3d7b4632b24373e70abb7c9362c837 100644 (file)
@@ -15,6 +15,7 @@
 #include "common/Cond.h"
 #include "common/dout.h"
 #include "common/errno.h"
+#include "common/snap_types.h"
 #include "include/rbd/librbd.hpp"
 
 #include <errno.h>
index 11d3364dfe4c59ceee541fa4a2f5f2043c4d96e3..e583820dce90c92d7846cad0fcd24e223f91bb9e 100644 (file)
@@ -18,6 +18,7 @@
 #include "mdstypes.h"
 #include "include/xlist.h"
 #include "include/elist.h"
+#include "common/snap_types.h"
 
 /*
  * generic snap descriptor.
index 03d52519275bce2f9e6e83021c3c9c1bb8ff7df9..46ff1d0a55d2b2a39e02c78806da0311074a313f 100644 (file)
@@ -24,6 +24,7 @@
 #include "include/utime.h"
 #include "include/CompatSet.h"
 #include "include/interval_set.h"
+#include "common/snap_types.h"
 #include "common/Formatter.h"