]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/osd_types: add purged_snaps to pg_stat_t
authorSage Weil <sage@redhat.com>
Thu, 12 Oct 2017 21:14:52 +0000 (16:14 -0500)
committerSage Weil <sage@redhat.com>
Sat, 2 Dec 2017 03:26:49 +0000 (21:26 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/osd_types.cc
src/osd/osd_types.h

index 8585f681098105948b344d84f79a17d33d7833fa..6cd18c2ef6fa967ac687de811d889764c6a3af84 100644 (file)
@@ -2315,6 +2315,16 @@ void pg_stat_t::dump(Formatter *f) const
   f->close_section();
   f->dump_int("up_primary", up_primary);
   f->dump_int("acting_primary", acting_primary);
+  f->open_array_section("purged_snaps");
+  for (interval_set<snapid_t>::const_iterator i = purged_snaps.begin();
+       i != purged_snaps.end();
+       ++i) {
+    f->open_object_section("interval");
+    f->dump_stream("start") << i.get_start();
+    f->dump_stream("length") << i.get_len();
+    f->close_section();
+  }
+  f->close_section();
 }
 
 void pg_stat_t::dump_brief(Formatter *f) const
@@ -2334,7 +2344,7 @@ void pg_stat_t::dump_brief(Formatter *f) const
 
 void pg_stat_t::encode(bufferlist &bl) const
 {
-  ENCODE_START(23, 22, bl);
+  ENCODE_START(24, 22, bl);
   ::encode(version, bl);
   ::encode(reported_seq, bl);
   ::encode(reported_epoch, bl);
@@ -2376,6 +2386,7 @@ void pg_stat_t::encode(bufferlist &bl) const
   ::encode(last_became_peered, bl);
   ::encode(pin_stats_invalid, bl);
   ::encode(state, bl);
+  ::encode(purged_snaps, bl);
   ENCODE_FINISH(bl);
 }
 
@@ -2383,7 +2394,7 @@ void pg_stat_t::decode(bufferlist::iterator &bl)
 {
   bool tmp;
   uint32_t old_state;
-  DECODE_START(23, bl);
+  DECODE_START(24, bl);
   ::decode(version, bl);
   ::decode(reported_seq, bl);
   ::decode(reported_epoch, bl);
@@ -2435,6 +2446,9 @@ void pg_stat_t::decode(bufferlist::iterator &bl)
   } else {
     state = old_state;
   }
+  if (struct_v >= 24) {
+    ::decode(purged_snaps, bl);
+  }
   DECODE_FINISH(bl);
 }
 
@@ -2528,7 +2542,8 @@ bool operator==(const pg_stat_t& l, const pg_stat_t& r)
     l.hitset_bytes_stats_invalid == r.hitset_bytes_stats_invalid &&
     l.up_primary == r.up_primary &&
     l.acting_primary == r.acting_primary &&
-    l.pin_stats_invalid == r.pin_stats_invalid;
+    l.pin_stats_invalid == r.pin_stats_invalid &&
+    l.purged_snaps == r.purged_snaps;
 }
 
 // -- pool_stat_t --
index 16562a3bedafde9912e18b90ad4bb8dfd1fe7ed4..0951c29872a6a1cc7fd2672ae8706ac16ce88245 100644 (file)
@@ -1946,6 +1946,8 @@ struct pg_stat_t {
 
   vector<int32_t> blocked_by;  ///< osds on which the pg is blocked
 
+  interval_set<snapid_t> purged_snaps;  ///< recently removed snaps that we've purged
+
   utime_t last_became_active;
   utime_t last_became_peered;