From: Sage Weil Date: Sat, 26 Jan 2013 03:50:45 +0000 (-0800) Subject: mon/PGMap: include timestamp X-Git-Tag: v0.57~83^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=76e9fe5f06411eb0e96753dcd708dd6e43ab2c02;p=ceph.git mon/PGMap: include timestamp Signed-off-by: Sage Weil --- diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 938e2862aaa3..e76130d07cb0 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -28,7 +28,7 @@ void PGMap::Incremental::encode(bufferlist &bl, uint64_t features) const return; } - ENCODE_START(5, 5, bl); + ENCODE_START(6, 5, bl); ::encode(version, bl); ::encode(pg_stat_updates, bl); ::encode(osd_stat_updates, bl); @@ -38,12 +38,13 @@ void PGMap::Incremental::encode(bufferlist &bl, uint64_t features) const ::encode(full_ratio, bl); ::encode(nearfull_ratio, bl); ::encode(pg_remove, bl); + ::encode(stamp, bl); ENCODE_FINISH(bl); } void PGMap::Incremental::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(5, 5, 5, bl); + DECODE_START_LEGACY_COMPAT_LEN(6, 5, 5, bl); ::decode(version, bl); if (struct_v < 3) { pg_stat_updates.clear(); @@ -84,12 +85,15 @@ void PGMap::Incremental::decode(bufferlist::iterator &bl) if (struct_v < 4 && nearfull_ratio == 0) { nearfull_ratio = -1; } + if (struct_v >= 6) + ::decode(stamp, bl); DECODE_FINISH(bl); } void PGMap::Incremental::dump(Formatter *f) const { f->dump_unsigned("version", version); + f->dump_stream("stamp") << stamp; f->dump_unsigned("osdmap_epoch", osdmap_epoch); f->dump_unsigned("pg_scan_epoch", pg_scan); f->dump_float("full_ratio", full_ratio); @@ -129,6 +133,7 @@ void PGMap::Incremental::generate_test_instances(list& o) o.push_back(new Incremental); o.push_back(new Incremental); o.back()->version = 1; + o.back()->stamp = utime_t(123,345); o.push_back(new Incremental); o.back()->version = 2; o.back()->pg_stat_updates[pg_t(1,2,3)] = pg_stat_t(); @@ -357,7 +362,7 @@ void PGMap::encode(bufferlist &bl, uint64_t features) const return; } - ENCODE_START(4, 4, bl); + ENCODE_START(5, 4, bl); ::encode(version, bl); ::encode(pg_stat, bl); ::encode(osd_stat, bl); @@ -365,12 +370,13 @@ void PGMap::encode(bufferlist &bl, uint64_t features) const ::encode(last_pg_scan, bl); ::encode(full_ratio, bl); ::encode(nearfull_ratio, bl); + ::encode(stamp, bl); ENCODE_FINISH(bl); } void PGMap::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(4, 4, 4, bl); + DECODE_START_LEGACY_COMPAT_LEN(5, 4, 4, bl); ::decode(version, bl); if (struct_v < 3) { pg_stat.clear(); @@ -392,6 +398,8 @@ void PGMap::decode(bufferlist::iterator &bl) ::decode(full_ratio, bl); ::decode(nearfull_ratio, bl); } + if (struct_v >= 5) + ::decode(stamp, bl); DECODE_FINISH(bl); calc_stats(); @@ -408,6 +416,7 @@ void PGMap::dump(Formatter *f) const void PGMap::dump_basic(Formatter *f) const { f->dump_unsigned("version", version); + f->dump_stream("stamp") << stamp; f->dump_unsigned("last_osdmap_epoch", last_osdmap_epoch); f->dump_unsigned("last_pg_scan", last_pg_scan); f->dump_float("full_ratio", full_ratio); @@ -495,6 +504,7 @@ void PGMap::dump_pg_stats_plain(ostream& ss, void PGMap::dump(ostream& ss) const { ss << "version " << version << std::endl; + ss << "stamp " << stamp << std::endl; ss << "last_osdmap_epoch " << last_osdmap_epoch << std::endl; ss << "last_pg_scan " << last_pg_scan << std::endl; ss << "full_ratio " << full_ratio << std::endl; diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h index 5748101125bc..86ef8d69b501 100644 --- a/src/mon/PGMap.h +++ b/src/mon/PGMap.h @@ -52,6 +52,7 @@ public: set pg_remove; float full_ratio; float nearfull_ratio; + utime_t stamp; void encode(bufferlist &bl, uint64_t features=-1) const; void decode(bufferlist::iterator &bl); @@ -70,6 +71,8 @@ public: pool_stat_t pg_sum; osd_stat_t osd_sum; + utime_t stamp; + set creating_pgs; // lru: front = new additions, back = recently pinged map > creating_pgs_by_osd; diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 5ca4bdeec446..aaeb7bfeeafd 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -258,6 +258,7 @@ void PGMonitor::encode_pending(bufferlist &bl) { dout(10) << "encode_pending v " << pending_inc.version << dendl; assert(paxos->get_version() + 1 == pending_inc.version); + pending_inc.stamp = ceph_clock_now(g_ceph_context); pending_inc.encode(bl, mon->get_quorum_features()); }