From: Sage Weil Date: Mon, 14 Jan 2013 06:43:35 +0000 (-0800) Subject: osd: add last_clean_scrub_stamp to pg_stat_t, pg_history_t X-Git-Tag: v0.57~204 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d738328488de831bf090f23e3fa6d25f6fa819df;p=ceph.git osd: add last_clean_scrub_stamp to pg_stat_t, pg_history_t Signed-off-by: Sage Weil --- diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 69420eef9898..a3d4ed39da55 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1017,6 +1017,7 @@ void pg_stat_t::dump(Formatter *f) const f->dump_stream("last_scrub_stamp") << last_scrub_stamp; f->dump_stream("last_deep_scrub") << last_deep_scrub; f->dump_stream("last_deep_scrub_stamp") << last_deep_scrub_stamp; + f->dump_stream("last_clean_scrub_stamp") << last_clean_scrub_stamp; f->dump_unsigned("log_size", log_size); f->dump_unsigned("ondisk_log_size", ondisk_log_size); f->dump_stream("stats_invalid") << stats_invalid; @@ -1033,7 +1034,7 @@ void pg_stat_t::dump(Formatter *f) const void pg_stat_t::encode(bufferlist &bl) const { - ENCODE_START(11, 8, bl); + ENCODE_START(12, 8, bl); ::encode(version, bl); ::encode(reported, bl); ::encode(state, bl); @@ -1059,12 +1060,13 @@ void pg_stat_t::encode(bufferlist &bl) const ::encode(last_deep_scrub, bl); ::encode(last_deep_scrub_stamp, bl); ::encode(stats_invalid, bl); + ::encode(last_clean_scrub_stamp, bl); ENCODE_FINISH(bl); } void pg_stat_t::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(10, 8, 8, bl); + DECODE_START_LEGACY_COMPAT_LEN(12, 8, 8, bl); ::decode(version, bl); ::decode(reported, bl); ::decode(state, bl); @@ -1133,6 +1135,11 @@ void pg_stat_t::decode(bufferlist::iterator &bl) } else { ::decode(stats_invalid, bl); } + if (struct_v >= 12) { + ::decode(last_clean_scrub_stamp, bl); + } else { + last_clean_scrub_stamp = utime_t(); + } DECODE_FINISH(bl); } @@ -1160,6 +1167,7 @@ void pg_stat_t::generate_test_instances(list& o) a.last_scrub_stamp = utime_t(11, 12); a.last_deep_scrub = eversion_t(13, 14); a.last_deep_scrub_stamp = utime_t(15, 16); + a.last_clean_scrub_stamp = utime_t(17, 18); list l; object_stat_collection_t::generate_test_instances(l); a.stats = *l.back(); @@ -1247,7 +1255,7 @@ void pool_stat_t::generate_test_instances(list& o) void pg_history_t::encode(bufferlist &bl) const { - ENCODE_START(5, 4, bl); + ENCODE_START(6, 4, bl); ::encode(epoch_created, bl); ::encode(last_epoch_started, bl); ::encode(last_epoch_clean, bl); @@ -1259,12 +1267,13 @@ void pg_history_t::encode(bufferlist &bl) const ::encode(last_scrub_stamp, bl); ::encode(last_deep_scrub, bl); ::encode(last_deep_scrub_stamp, bl); + ::encode(last_clean_scrub_stamp, bl); ENCODE_FINISH(bl); } void pg_history_t::decode(bufferlist::iterator &bl) { - DECODE_START_LEGACY_COMPAT_LEN(5, 4, 4, bl); + DECODE_START_LEGACY_COMPAT_LEN(6, 4, 4, bl); ::decode(epoch_created, bl); ::decode(last_epoch_started, bl); if (struct_v >= 3) @@ -1278,10 +1287,13 @@ void pg_history_t::decode(bufferlist::iterator &bl) if (struct_v >= 2) { ::decode(last_scrub, bl); ::decode(last_scrub_stamp, bl); - if (struct_v >= 5) { - ::decode(last_deep_scrub, bl); - ::decode(last_deep_scrub_stamp, bl); - } + } + if (struct_v >= 5) { + ::decode(last_deep_scrub, bl); + ::decode(last_deep_scrub_stamp, bl); + } + if (struct_v >= 6) { + ::decode(last_clean_scrub_stamp, bl); } DECODE_FINISH(bl); } @@ -1299,6 +1311,7 @@ void pg_history_t::dump(Formatter *f) const f->dump_stream("last_scrub_stamp") << last_scrub_stamp; f->dump_stream("last_deep_scrub") << last_deep_scrub; f->dump_stream("last_deep_scrub_stamp") << last_deep_scrub_stamp; + f->dump_stream("last_clean_scrub_stamp") << last_clean_scrub_stamp; } void pg_history_t::generate_test_instances(list& o) @@ -1316,6 +1329,7 @@ void pg_history_t::generate_test_instances(list& o) o.back()->last_scrub_stamp = utime_t(10, 11); o.back()->last_deep_scrub = eversion_t(12, 13); o.back()->last_deep_scrub_stamp = utime_t(14, 15); + o.back()->last_clean_scrub_stamp = utime_t(16, 17); } diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 81f1aa2962dc..1e57bc9427c6 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -885,6 +885,7 @@ struct pg_stat_t { eversion_t last_deep_scrub; utime_t last_scrub_stamp; utime_t last_deep_scrub_stamp; + utime_t last_clean_scrub_stamp; object_stat_collection_t stats; bool stats_invalid; @@ -898,7 +899,7 @@ struct pg_stat_t { pg_stat_t() : state(0), created(0), last_epoch_clean(0), - parent_split_bits(0), + parent_split_bits(0), stats_invalid(false), log_size(0), ondisk_log_size(0), mapping_epoch(0) @@ -978,6 +979,7 @@ struct pg_history_t { eversion_t last_deep_scrub; utime_t last_scrub_stamp; utime_t last_deep_scrub_stamp; + utime_t last_clean_scrub_stamp; pg_history_t() : epoch_created(0), @@ -1019,6 +1021,10 @@ struct pg_history_t { last_deep_scrub_stamp = other.last_deep_scrub_stamp; modified = true; } + if (other.last_clean_scrub_stamp > last_clean_scrub_stamp) { + last_clean_scrub_stamp = other.last_clean_scrub_stamp; + modified = true; + } return modified; }