From: Radoslaw Zarzynski Date: Tue, 7 Feb 2023 13:18:39 +0000 (+0000) Subject: crimson/osd: fix zeroed starting timestamp of tracked ops X-Git-Tag: v18.1.0~374^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d4a4ed17bdf1e3e8d0a1b24f20fd25f5da6052cc;p=ceph.git crimson/osd: fix zeroed starting timestamp of tracked ops Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/common/operation.h b/src/crimson/common/operation.h index c3be299fd073..f26a3e860bc2 100644 --- a/src/crimson/common/operation.h +++ b/src/crimson/common/operation.h @@ -326,6 +326,8 @@ class Operation : public boost::intrusive_ref_counter< return id; } + static constexpr bool is_trackable = false; + virtual unsigned get_type() const = 0; virtual const char *get_type_name() const = 0; virtual void print(std::ostream &) const = 0; diff --git a/src/crimson/osd/osd_operation.h b/src/crimson/osd/osd_operation.h index eb33442a44ce..dbc13c20c6e6 100644 --- a/src/crimson/osd/osd_operation.h +++ b/src/crimson/osd/osd_operation.h @@ -146,6 +146,9 @@ protected: return typename InterruptorT::template futurize_t{std::move(ret)}; } } + +public: + static constexpr bool is_trackable = true; }; template diff --git a/src/crimson/osd/osd_operations/logmissing_request.h b/src/crimson/osd/osd_operations/logmissing_request.h index e05868a96488..5cd879912e5a 100644 --- a/src/crimson/osd/osd_operations/logmissing_request.h +++ b/src/crimson/osd/osd_operations/logmissing_request.h @@ -51,6 +51,7 @@ public: ShardServices &shard_services, Ref pg); std::tuple< + StartEvent, ConnectionPipeline::AwaitActive::BlockingEvent, ConnectionPipeline::AwaitMap::BlockingEvent, ConnectionPipeline::GetPG::BlockingEvent, diff --git a/src/crimson/osd/osd_operations/logmissing_request_reply.h b/src/crimson/osd/osd_operations/logmissing_request_reply.h index 9d3079871585..e1c451be98ac 100644 --- a/src/crimson/osd/osd_operations/logmissing_request_reply.h +++ b/src/crimson/osd/osd_operations/logmissing_request_reply.h @@ -51,6 +51,7 @@ public: ShardServices &shard_services, Ref pg); std::tuple< + StartEvent, ConnectionPipeline::AwaitActive::BlockingEvent, ConnectionPipeline::AwaitMap::BlockingEvent, ConnectionPipeline::GetPG::BlockingEvent, diff --git a/src/crimson/osd/osd_operations/replicated_request.h b/src/crimson/osd/osd_operations/replicated_request.h index 467a581c6dba..f9c61a53ff07 100644 --- a/src/crimson/osd/osd_operations/replicated_request.h +++ b/src/crimson/osd/osd_operations/replicated_request.h @@ -50,6 +50,7 @@ public: ShardServices &shard_services, Ref pg); std::tuple< + StartEvent, ConnectionPipeline::AwaitActive::BlockingEvent, ConnectionPipeline::AwaitMap::BlockingEvent, ConnectionPipeline::GetPG::BlockingEvent, diff --git a/src/crimson/osd/pg_shard_manager.h b/src/crimson/osd/pg_shard_manager.h index 51914bfaedf8..fc56e64eb1b9 100644 --- a/src/crimson/osd/pg_shard_manager.h +++ b/src/crimson/osd/pg_shard_manager.h @@ -312,6 +312,9 @@ public: auto &opref = *op; auto id = op->get_id(); + if constexpr (T::is_trackable) { + op->template track_event(); + } auto fut = opref.template enter_stage<>( opref.get_connection_pipeline().await_active ).then([this, &opref, &logger] {