diff options
author | Sage Weil <sage@inktank.com> | 2012-11-05 06:23:56 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-11-30 13:17:27 -0800 |
commit | 4940dac7e20ff3adc31144564d858439bfb46e11 (patch) | |
tree | ab66019791cf7497d6ceeda1ae01d7d99ec3b24f | |
parent | 2494499295424b032ac7f79d72aca1128cd92678 (diff) | |
download | ceph-4940dac7e20ff3adc31144564d858439bfb46e11.tar.gz |
osd: add start_stamp to pg_interval_t
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osd/osd_types.cc | 9 | ||||
-rw-r--r-- | src/osd/osd_types.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 4a1b3fcf2ef..55b5655cb61 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -1421,23 +1421,25 @@ ostream &operator<<(ostream &lhs, const pg_notify_t ¬ify) void pg_interval_t::encode(bufferlist& bl) const { - ENCODE_START(2, 2, bl); + ENCODE_START(3, 2, bl); ::encode(first, bl); ::encode(last, bl); ::encode(up, bl); ::encode(acting, bl); ::encode(maybe_went_rw, bl); + ::encode(start_stamp, bl); ENCODE_FINISH(bl); } void pg_interval_t::decode(bufferlist::iterator& bl) { - DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, bl); + DECODE_START_LEGACY_COMPAT_LEN(3, 2, 2, bl); ::decode(first, bl); ::decode(last, bl); ::decode(up, bl); ::decode(acting, bl); ::decode(maybe_went_rw, bl); + ::decode(start_stamp, bl); DECODE_FINISH(bl); } @@ -1453,6 +1455,7 @@ void pg_interval_t::dump(Formatter *f) const f->open_array_section("acting"); for (vector<int>::const_iterator p = acting.begin(); p != acting.end(); ++p) f->dump_int("osd", *p); + f->dump_stream("start_stamp") << duration; f->close_section(); } @@ -1466,6 +1469,7 @@ void pg_interval_t::generate_test_instances(list<pg_interval_t*>& o) o.back()->first = 4; o.back()->last = 5; o.back()->maybe_went_rw = true; + o.back()->start_stamp = utime_t(22, 23); } bool pg_interval_t::check_new_interval( @@ -1491,6 +1495,7 @@ bool pg_interval_t::check_new_interval( i.last = osdmap->get_epoch() - 1; i.acting = old_acting; i.up = old_up; + i.start_stamp = osdmap->get_modified(); if (i.acting.size() >= osdmap->get_pools().find(pool_id)->second.min_size) { diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index da2b2abf319..bab46e69430 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -1122,6 +1122,7 @@ struct pg_interval_t { vector<int> up, acting; epoch_t first, last; bool maybe_went_rw; + utime_t start_stamp; ///< timestamp of first osdmap epoch pg_interval_t() : first(0), last(0), maybe_went_rw(false) {} |