]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/osd_operations/client_request: remove OSD reference
authorSamuel Just <sjust@redhat.com>
Thu, 8 Sep 2022 19:43:42 +0000 (12:43 -0700)
committerSamuel Just <sjust@redhat.com>
Tue, 27 Sep 2022 02:35:41 +0000 (19:35 -0700)
Capture ShardServices reference for use in put_historic directly.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/osd.cc
src/crimson/osd/osd_operations/client_request.cc
src/crimson/osd/osd_operations/client_request.h

index 7ebe89f4d31e21e052a44a84c11af5a5b1703814..795a040a8becd5fcf8fe6993727c6369bde8fcd0 100644 (file)
@@ -1012,7 +1012,7 @@ seastar::future<> OSD::handle_osd_op(crimson::net::ConnectionRef conn,
                                      Ref<MOSDOp> m)
 {
   (void) pg_shard_manager.start_pg_operation<ClientRequest>(
-    *this,
+    get_shard_services(),
     conn,
     std::move(m));
   return seastar::now();
index d19e5a97ee23b3c1e104135259e83e1d6fff9042..e23c4aeeddfc0cc1b8323e223322ffd87f10b2a1 100644 (file)
@@ -49,8 +49,9 @@ void ClientRequest::complete_request()
 }
 
 ClientRequest::ClientRequest(
-  OSD &osd, crimson::net::ConnectionRef conn, Ref<MOSDOp> &&m)
-  : osd(osd),
+  ShardServices &shard_services, crimson::net::ConnectionRef conn,
+  Ref<MOSDOp> &&m)
+  : put_historic_shard_services(&shard_services),
     conn(std::move(conn)),
     m(std::move(m)),
     instance_handle(new instance_handle_t)
@@ -173,6 +174,7 @@ seastar::future<> ClientRequest::with_pg_int(
 seastar::future<> ClientRequest::with_pg(
   ShardServices &shard_services, Ref<PG> pgref)
 {
+  put_historic_shard_services = &shard_services;
   pgref->client_request_orderer.add_request(*this);
   auto ret = on_complete.get_future();
   std::ignore = with_pg_int(
@@ -347,7 +349,8 @@ bool ClientRequest::is_misdirected(const PG& pg) const
 
 void ClientRequest::put_historic() const
 {
-  osd.get_shard_services().get_registry().put_historic(*this);
+  ceph_assert_always(put_historic_shard_services);
+  put_historic_shard_services->get_registry().put_historic(*this);
 }
 
 }
index fafcc5165320f9d4f926e935912734e6d15d3687..27bab52f522e7b536b6252c2547c5e931bfe6c91 100644 (file)
@@ -28,9 +28,11 @@ class ShardServices;
 
 class ClientRequest final : public PhasedOperationT<ClientRequest>,
                             private CommonClientRequest {
-  OSD &osd;
-  crimson::net::ConnectionFRef conn;
+  // Initially set to primary core, updated to pg core after move,
+  // used by put_historic
+  ShardServices *put_historic_shard_services = nullptr;
 
+  crimson::net::ConnectionFRef conn;
   // must be after conn due to ConnectionPipeline's life-time
   Ref<MOSDOp> m;
   OpInfo op_info;
@@ -184,7 +186,9 @@ public:
 
   static constexpr OperationTypeCode type = OperationTypeCode::client_request;
 
-  ClientRequest(OSD &osd, crimson::net::ConnectionRef, Ref<MOSDOp> &&m);
+  ClientRequest(
+    ShardServices &shard_services,
+    crimson::net::ConnectionRef, Ref<MOSDOp> &&m);
   ~ClientRequest();
 
   void print(std::ostream &) const final;