]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: include map timestamp in image map
authorVenky Shankar <vshankar@redhat.com>
Wed, 29 Nov 2017 04:03:37 +0000 (23:03 -0500)
committerVenky Shankar <vshankar@redhat.com>
Thu, 7 Dec 2017 09:55:56 +0000 (04:55 -0500)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
src/cls/rbd/cls_rbd_types.cc
src/cls/rbd/cls_rbd_types.h

index e02582da13d0400da5b2e64a7caeec14948ba2b7..8c1767c4edf8eabdc10ab8de3975d720fd4decb7 100644 (file)
@@ -482,6 +482,7 @@ void TrashImageSpec::dump(Formatter *f) const {
 void MirrorImageMap::encode(bufferlist &bl) const {
   ENCODE_START(1, 1, bl);
   ::encode(instance_id, bl);
+  ::encode(mapped_time, bl);
   ::encode(data, bl);
   ENCODE_FINISH(bl);
 }
@@ -489,12 +490,14 @@ void MirrorImageMap::encode(bufferlist &bl) const {
 void MirrorImageMap::decode(bufferlist::iterator &it) {
   DECODE_START(1, it);
   ::decode(instance_id, it);
+  ::decode(mapped_time, it);
   ::decode(data, it);
   DECODE_FINISH(it);
 }
 
 void MirrorImageMap::dump(Formatter *f) const {
   f->dump_string("instance_id", instance_id);
+  f->dump_stream("mapped_time") << mapped_time;
 
   std::stringstream data_ss;
   data.hexdump(data_ss);
@@ -506,22 +509,24 @@ void MirrorImageMap::generate_test_instances(
   bufferlist data;
   data.append(std::string(128, '1'));
 
-  o.push_back(new MirrorImageMap("uuid-123", data));
-  o.push_back(new MirrorImageMap("uuid-abc", data));
+  o.push_back(new MirrorImageMap("uuid-123", utime_t(), data));
+  o.push_back(new MirrorImageMap("uuid-abc", utime_t(), data));
 }
 
 bool MirrorImageMap::operator==(const MirrorImageMap &rhs) const {
-  return instance_id == rhs.instance_id && data.contents_equal(data);
+  return instance_id == rhs.instance_id && mapped_time == rhs.mapped_time &&
+    data.contents_equal(rhs.data);
 }
 
 bool MirrorImageMap::operator<(const MirrorImageMap &rhs) const {
-  return  instance_id < rhs.instance_id;
+  return instance_id < rhs.instance_id ||
+        (instance_id == rhs.instance_id && mapped_time < rhs.mapped_time);
 }
 
 std::ostream& operator<<(std::ostream& os,
                          const MirrorImageMap &image_map) {
-  return os << "["
-            << "instance_id=" << image_map.instance_id << "]";
+  return os << "[" << "instance_id=" << image_map.instance_id << ", mapped_time="
+            << image_map.mapped_time << "]";
 }
 
 } // namespace rbd
index d0f73f14d3352d66796fd4127859e51a6e670145..87c0a397d7605d6579d6043818d49835038e8165 100644 (file)
@@ -368,13 +368,15 @@ struct MirrorImageMap {
   MirrorImageMap() {
   }
 
-  MirrorImageMap(const std::string &instance_id,
+  MirrorImageMap(const std::string &instance_id, utime_t mapped_time,
                  const bufferlist &data)
     : instance_id(instance_id),
+      mapped_time(mapped_time),
       data(data) {
   }
 
   std::string instance_id;
+  utime_t mapped_time;
   bufferlist data;
 
   void encode(bufferlist &bl) const;