From: Kefu Chai Date: Wed, 16 Sep 2015 07:08:17 +0000 (+0800) Subject: mon/PGMap: calc min_last_epoch_clean when decode X-Git-Tag: v9.1.0~113^2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F5950%2Fhead;p=ceph.git mon/PGMap: calc min_last_epoch_clean when decode Fixes: #13112 Signed-off-by: Kefu Chai --- diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 6fa3aaaea8fa..28561b7168fd 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -374,7 +374,7 @@ void PGMap::calc_stats() redo_full_sets(); - calc_min_last_epoch_clean(); + min_last_epoch_clean = calc_min_last_epoch_clean(); } void PGMap::update_pg(pg_t pgid, bufferlist& bl) diff --git a/src/test/mon/PGMap.cc b/src/test/mon/PGMap.cc index 9f7a6b2d0b1f..f13fa8936669 100644 --- a/src/test/mon/PGMap.cc +++ b/src/test/mon/PGMap.cc @@ -81,7 +81,40 @@ TEST(pgmap, min_last_epoch_clean) } - +TEST(pgmap, calc_stats) +{ + bufferlist bl; + { + PGMap pg_map; + PGMap::Incremental inc; + osd_stat_t os; + pg_stat_t ps; + + ps.last_epoch_clean = 999; + inc.pg_stat_updates[pg_t(9,9)] = ps; + inc.version = 1; + inc.update_stat(0, 123, os); + pg_map.apply_incremental(g_ceph_context, inc); + ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean()); + pg_map.encode(bl); + } + { + PGMap pg_map; + PGMap::Incremental inc; + osd_stat_t os; + pg_stat_t ps; + + ps.last_epoch_clean = 999; + inc.pg_stat_updates[pg_t(9,9)] = ps; + inc.version = 1; + inc.update_stat(0, 321, os); + pg_map.apply_incremental(g_ceph_context, inc); + ASSERT_EQ(321u, pg_map.get_min_last_epoch_clean()); + bufferlist::iterator p = bl.begin(); + ::decode(pg_map, p); + ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean()); + } +} int main(int argc, char **argv) { vector args;