From: Samuel Just Date: Sat, 5 Apr 2025 01:57:33 +0000 (-0700) Subject: crimson: fix DynamicPerfStats usage in ClientRequest X-Git-Tag: v20.1.0~325^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=064df68b6b59b04d8773849c30814bc453f88ccc;p=ceph.git 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 (cherry picked from commit 794bb024efa94cb2bb2a90df226bab05c8b9449b) --- diff --git a/src/crimson/osd/osd_operations/client_request.h b/src/crimson/osd/osd_operations/client_request.h index bdc3ff0d2415..d8865235aeae 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 996baabb498e..4277973514e6 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