From 794bb024efa94cb2bb2a90df226bab05c8b9449b Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Fri, 4 Apr 2025 18:57:33 -0700 Subject: [PATCH] crimson: fix DynamicPerfStats usage in ClientRequest ClientRequest::get_connection() return l_conn, which will be null by the time PG::add_client_request_lat is called in ClientRequest::do_process. Modify get_connection() to return a Connection& from whichever of l_conn or r_conn isn't null. Signed-off-by: Samuel Just --- src/crimson/osd/osd_operations/client_request.h | 9 +++++++-- src/osd/DynamicPerfStats.h | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index bdc3ff0d241..d8865235aea 100644 --- a/src/crimson/osd/osd_operations/client_request.h +++ b/src/crimson/osd/osd_operations/client_request.h @@ -54,8 +54,13 @@ public: static_assert(std::is_same_v); return m.get(); } - const crimson::net::ConnectionRef &get_connection() const { - return l_conn; + const crimson::net::Connection &get_connection() const { + if (l_conn) { + return *l_conn; + } else { + assert(r_conn); + return *r_conn; + } } /** diff --git a/src/osd/DynamicPerfStats.h b/src/osd/DynamicPerfStats.h index 996baabb498..4277973514e 100644 --- a/src/osd/DynamicPerfStats.h +++ b/src/osd/DynamicPerfStats.h @@ -122,7 +122,7 @@ public: break; case OSDPerfMetricSubKeyType::CLIENT_ADDRESS: #ifdef WITH_CRIMSON - match_string = stringify(op.get_connection()->get_peer_addr()); + match_string = stringify(op.get_connection().get_peer_addr()); #else match_string = stringify(m->get_connection()->get_peer_addr()); #endif -- 2.39.5