From: Sage Weil Date: Mon, 31 Oct 2011 18:57:14 +0000 (-0700) Subject: osd: improve last_peering_reset debugging X-Git-Tag: v0.39~122 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5fa8df1e6e10bc6edd2c567935182945592a4e10;p=ceph.git osd: improve last_peering_reset debugging Signed-off-by: Sage Weil --- diff --git a/src/messages/MOSDPGQuery.h b/src/messages/MOSDPGQuery.h index 123cff37523d..a601c7ed7487 100644 --- a/src/messages/MOSDPGQuery.h +++ b/src/messages/MOSDPGQuery.h @@ -39,7 +39,16 @@ private: ~MOSDPGQuery() {} public: - const char *get_type_name() { return "PGq"; } + const char *get_type_name() { return "pg_query"; } + void print(ostream& out) { + out << "pg_query("; + for (map::iterator p = pg_list.begin(); p != pg_list.end(); ++p) { + if (p != pg_list.begin()) + out << ","; + out << p->first; + } + out << " epoch " << epoch << ")"; + } void encode_payload(CephContext *cct) { ::encode(epoch, payload); diff --git a/src/osd/PG.cc b/src/osd/PG.cc index eea3e168062c..f20f62380094 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3442,17 +3442,23 @@ bool PG::may_need_replay(const OSDMap *osdmap) const bool PG::acting_up_affected(const vector& newup, const vector& newacting) { if (acting != newacting || up != newup) { + dout(20) << "acting_up_affected newup " << newup << " newacting " << newacting << dendl; return true; } else { return false; } } -bool PG::old_peering_msg(epoch_t reply_epoch, - epoch_t query_epoch) +bool PG::old_peering_msg(epoch_t reply_epoch, epoch_t query_epoch) { - return (last_peering_reset > reply_epoch || - last_peering_reset > query_epoch); + if (last_peering_reset > reply_epoch || + last_peering_reset > query_epoch) { + dout(10) << "old_peering_msg reply_epoch " << reply_epoch << " query_epoch " << query_epoch + << " last_peering_reset " << last_peering_reset + << dendl; + return true; + } + return false; } @@ -3469,7 +3475,9 @@ void PG::on_removal() remove_watchers_and_notifies(); } -void PG::set_last_peering_reset() { +void PG::set_last_peering_reset() +{ + dout(20) << "set_last_peering_reset " << osd->osdmap->get_epoch() << dendl; last_peering_reset = osd->osdmap->get_epoch(); } @@ -3777,6 +3785,7 @@ ostream& operator<<(ostream& out, const PG& pg) if (pg.acting != pg.up) out << "/" << pg.acting; out << " r=" << pg.get_role(); + out << " lpr=" << pg.get_last_peering_reset(); if (pg.is_active() && pg.last_update_ondisk != pg.info.last_update) diff --git a/src/osd/PG.h b/src/osd/PG.h index a2ef11d72f3f..32b04d3d324b 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1583,6 +1583,8 @@ public: bool is_primary() const { return role == PG_ROLE_HEAD; } bool is_replica() const { return role > 0; } + + epoch_t get_last_peering_reset() const { return last_peering_reset; } //int get_state() const { return state; } bool state_test(int m) const { return (state & m) != 0; }