}
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)
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(
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);
}
}
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;
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;