From: Guang Yang Date: Wed, 23 Sep 2015 23:54:48 +0000 (+0000) Subject: osd: dump number of missing objects for each peer with pg query X-Git-Tag: v10.0.2~109^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=169cd4d962140fc0fff8cd721976a2a8430c6250;p=ceph.git osd: dump number of missing objects for each peer with pg query Signed-off-by: Guang Yang --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 263c88bed5f0..a37a25066761 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2439,6 +2439,19 @@ void PG::_update_calc_stats() pg_log.get_missing().num_missing(); degraded += pg_log.get_missing().num_missing(); + // num_objects_missing on each peer + for (map::iterator pi = + peer_info.begin(); + pi != peer_info.end(); + ++pi) { + map::const_iterator pm = + peer_missing.find(pi->first); + if (pm != peer_missing.end()) { + pi->second.stats.stats.sum.num_objects_missing = + pm->second.num_missing(); + } + } + assert(!acting.empty()); for (set::iterator i = actingset.begin(); i != actingset.end(); diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 464cb197cb02..37c91806ed54 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1752,6 +1752,7 @@ void object_stat_sum_t::dump(Formatter *f) const f->dump_int("num_object_clones", num_object_clones); f->dump_int("num_object_copies", num_object_copies); f->dump_int("num_objects_missing_on_primary", num_objects_missing_on_primary); + f->dump_int("num_objects_missing", num_objects_missing); f->dump_int("num_objects_degraded", num_objects_degraded); f->dump_int("num_objects_misplaced", num_objects_misplaced); f->dump_int("num_objects_unfound", num_objects_unfound); @@ -1784,7 +1785,7 @@ void object_stat_sum_t::dump(Formatter *f) const void object_stat_sum_t::encode(bufferlist& bl) const { - ENCODE_START(14, 3, bl); + ENCODE_START(15, 3, bl); ::encode(num_bytes, bl); ::encode(num_objects, bl); ::encode(num_object_clones, bl); @@ -1818,6 +1819,7 @@ void object_stat_sum_t::encode(bufferlist& bl) const ::encode(num_evict_mode_some, bl); ::encode(num_evict_mode_full, bl); ::encode(num_objects_pinned, bl); + ::encode(num_objects_missing, bl); ENCODE_FINISH(bl); } @@ -1916,6 +1918,11 @@ void object_stat_sum_t::decode(bufferlist::iterator& bl) } else { num_objects_pinned = 0; } + if (struct_v >= 15) { + ::decode(num_objects_missing, bl); + } else { + num_objects_missing = 0; + } DECODE_FINISH(bl); } @@ -1928,6 +1935,7 @@ void object_stat_sum_t::generate_test_instances(list& o) a.num_object_clones = 4; a.num_object_copies = 5; a.num_objects_missing_on_primary = 6; + a.num_objects_missing = 123; a.num_objects_degraded = 7; a.num_objects_unfound = 8; a.num_rd = 9; a.num_rd_kb = 10; @@ -1963,6 +1971,7 @@ void object_stat_sum_t::add(const object_stat_sum_t& o) num_object_clones += o.num_object_clones; num_object_copies += o.num_object_copies; num_objects_missing_on_primary += o.num_objects_missing_on_primary; + num_objects_missing += o.num_objects_missing; num_objects_degraded += o.num_objects_degraded; num_objects_misplaced += o.num_objects_misplaced; num_rd += o.num_rd; @@ -2000,6 +2009,7 @@ void object_stat_sum_t::sub(const object_stat_sum_t& o) num_object_clones -= o.num_object_clones; num_object_copies -= o.num_object_copies; num_objects_missing_on_primary -= o.num_objects_missing_on_primary; + num_objects_missing -= o.num_objects_missing; num_objects_degraded -= o.num_objects_degraded; num_objects_misplaced -= o.num_objects_misplaced; num_rd -= o.num_rd; @@ -2038,6 +2048,7 @@ bool operator==(const object_stat_sum_t& l, const object_stat_sum_t& r) l.num_object_clones == r.num_object_clones && l.num_object_copies == r.num_object_copies && l.num_objects_missing_on_primary == r.num_objects_missing_on_primary && + l.num_objects_missing == r.num_objects_missing && l.num_objects_degraded == r.num_objects_degraded && l.num_objects_misplaced == r.num_objects_misplaced && l.num_objects_unfound == r.num_objects_unfound && diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 9810e6b76dc4..75d629deb49c 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1436,6 +1436,7 @@ struct object_stat_sum_t { int64_t num_object_clones; int64_t num_object_copies; // num_objects * num_replicas int64_t num_objects_missing_on_primary; + int64_t num_objects_missing; int64_t num_objects_degraded; int64_t num_objects_misplaced; int64_t num_objects_unfound; @@ -1468,7 +1469,8 @@ struct object_stat_sum_t { object_stat_sum_t() : num_bytes(0), num_objects(0), num_object_clones(0), num_object_copies(0), - num_objects_missing_on_primary(0), num_objects_degraded(0), + num_objects_missing_on_primary(0), num_objects_missing(0), + num_objects_degraded(0), num_objects_misplaced(0), num_objects_unfound(0), num_rd(0), num_rd_kb(0), num_wr(0), num_wr_kb(0), @@ -1499,6 +1501,7 @@ struct object_stat_sum_t { FLOOR(num_object_clones); FLOOR(num_object_copies); FLOOR(num_objects_missing_on_primary); + FLOOR(num_objects_missing); FLOOR(num_objects_degraded); FLOOR(num_objects_misplaced); FLOOR(num_objects_unfound); @@ -1544,6 +1547,7 @@ struct object_stat_sum_t { SPLIT(num_object_clones); SPLIT(num_object_copies); SPLIT(num_objects_missing_on_primary); + SPLIT(num_objects_missing); SPLIT(num_objects_degraded); SPLIT(num_objects_misplaced); SPLIT(num_objects_unfound);