]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: add floor() method to pg/osd stat structs
authorSage Weil <sage@inktank.com>
Thu, 18 Jul 2013 04:52:50 +0000 (21:52 -0700)
committerSage Weil <sage@inktank.com>
Fri, 19 Jul 2013 17:31:48 +0000 (10:31 -0700)
We often want to maintain a nonnegative value.  We generalize
this to floors other than zero only because it makes the function
call make intuitive sense; I don't think it is at all useful.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/osd_types.h

index 66394c60a0c78e69007d9ad2ba43e04397280440..3a6db4d8315fe721cc4e9b6f5498436457fac546 100644 (file)
@@ -888,6 +888,28 @@ struct object_stat_sum_t {
       num_keys_recovered(0)
   {}
 
+  void floor(int64_t f) {
+#define FLOOR(x) if (x < f) x = f
+    FLOOR(num_bytes);
+    FLOOR(num_objects);
+    FLOOR(num_object_clones);
+    FLOOR(num_object_copies);
+    FLOOR(num_objects_missing_on_primary);
+    FLOOR(num_objects_degraded);
+    FLOOR(num_objects_unfound);
+    FLOOR(num_rd);
+    FLOOR(num_rd_kb);
+    FLOOR(num_wr);
+    FLOOR(num_wr_kb);
+    FLOOR(num_scrub_errors);
+    FLOOR(num_shallow_scrub_errors);
+    FLOOR(num_deep_scrub_errors);
+    FLOOR(num_objects_recovered);
+    FLOOR(num_bytes_recovered);
+    FLOOR(num_keys_recovered);
+#undef FLOOR
+  }
+
   void clear() {
     memset(this, 0, sizeof(*this));
   }
@@ -940,6 +962,12 @@ struct object_stat_collection_t {
     cat_sum.clear();
   }
 
+  void floor(int64_t f) {
+    sum.floor(f);
+    for (map<string,object_stat_sum_t>::iterator p = cat_sum.begin(); p != cat_sum.end(); ++p)
+      p->second.floor(f);
+  }
+
   void add(const object_stat_sum_t& o, const string& cat) {
     sum.add(o);
     if (cat.length())
@@ -1031,6 +1059,14 @@ struct pg_stat_t {
     return make_pair(reported_epoch, reported_seq);
   }
 
+  void floor(int64_t f) {
+    stats.floor(f);
+    if (log_size < f)
+      log_size = f;
+    if (ondisk_log_size < f)
+      ondisk_log_size = f;
+  }
+
   void add(const pg_stat_t& o) {
     stats.add(o.stats);
     log_size += o.log_size;
@@ -1060,6 +1096,14 @@ struct pool_stat_t {
   pool_stat_t() : log_size(0), ondisk_log_size(0)
   { }
 
+  void floor(int64_t f) {
+    stats.floor(f);
+    if (log_size < f)
+      log_size = f;
+    if (ondisk_log_size < f)
+      ondisk_log_size = f;
+  }
+
   void add(const pg_stat_t& o) {
     stats.add(o.stats);
     log_size += o.log_size;