From: Xuehan Xu Date: Tue, 20 Oct 2020 06:51:30 +0000 (+0800) Subject: crimson/osd: fix pg info statistics error during recovery X-Git-Tag: v16.1.0~715^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c7e6b6f021f068c0ee639ab29ed4301b305eb16d;p=ceph.git crimson/osd: fix pg info statistics error during recovery Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index d4d3c82d350..930aa5e73d9 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -274,7 +274,13 @@ public: shard_services.remove_want_pg_temp(pgid.pgid); } void publish_stats_to_osd() final { - // Not needed yet + if (!is_primary()) + return; + + (void) peering_state.prepare_stats_for_publish( + false, + pg_stat_t(), + object_stat_collection_t()); } void clear_publish_stats() final { // Not needed yet diff --git a/src/crimson/osd/pg_recovery.cc b/src/crimson/osd/pg_recovery.cc index cf892aa69b2..3315feed6eb 100644 --- a/src/crimson/osd/pg_recovery.cc +++ b/src/crimson/osd/pg_recovery.cc @@ -327,6 +327,7 @@ void PGRecovery::on_local_recover( if (!pg->is_unreadable_object(soid)) { pg->get_recovery_backend()->get_recovering(soid).set_readable(); } + pg->publish_stats_to_osd(); } } @@ -337,6 +338,7 @@ void PGRecovery::on_global_recover ( { logger().info("{} {}", __func__, soid); pg->get_peering_state().object_recovered(soid, stat_diff); + pg->publish_stats_to_osd(); auto& recovery_waiter = pg->get_recovery_backend()->get_recovering(soid); if (!is_delete) recovery_waiter.obc->drop_recovery_read(); diff --git a/src/crimson/osd/pg_recovery_listener.h b/src/crimson/osd/pg_recovery_listener.h index 2ed08e91d77..c922b99561a 100644 --- a/src/crimson/osd/pg_recovery_listener.h +++ b/src/crimson/osd/pg_recovery_listener.h @@ -35,4 +35,5 @@ public: virtual epoch_t get_last_peering_reset() const = 0; virtual const pg_info_t& get_info() const= 0; virtual seastar::future<> stop() = 0; + virtual void publish_stats_to_osd() = 0; };