From 684928883f5eaaec99a8cc8c43e81fae69f9fbfa Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Wed, 16 Sep 2015 15:08:17 +0800 Subject: [PATCH] mon/PGMap: calc min_last_epoch_clean when decode Fixes: #13112 Signed-off-by: Kefu Chai (cherry picked from commit d0ac68bf1785b330f3202d924c2203ace9393fe6) --- src/mon/PGMap.cc | 2 +- src/test/mon/PGMap.cc | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index e60ed6ae29d..fb63d9ad1ce 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -373,7 +373,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 9f7a6b2d0b1..f13fa893666 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; -- 2.47.3