diff options
author | Sage Weil <sage@inktank.com> | 2013-07-17 21:52:50 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-07-19 10:31:48 -0700 |
commit | 2e09b6e0bc1e5cf0aee5e14d7359fba991a80e74 (patch) | |
tree | 1988977ba9da249ddb2aec0ce36a438dd2f38e17 | |
parent | b4db58865f537601a89753a37b494f8ccb1e1b6f (diff) | |
download | ceph-2e09b6e0bc1e5cf0aee5e14d7359fba991a80e74.tar.gz |
osd: add floor() method to pg/osd stat structs
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>
-rw-r--r-- | src/osd/osd_types.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 66394c60a0c..3a6db4d8315 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -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; |