]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: fix zeroed starting timestamp of tracked ops 50019/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 7 Feb 2023 13:18:39 +0000 (13:18 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 7 Feb 2023 14:22:40 +0000 (14:22 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/common/operation.h
src/crimson/osd/osd_operation.h
src/crimson/osd/osd_operations/logmissing_request.h
src/crimson/osd/osd_operations/logmissing_request_reply.h
src/crimson/osd/osd_operations/replicated_request.h
src/crimson/osd/pg_shard_manager.h

index c3be299fd0738525d2483febb2aa6e042537ebab..f26a3e860bc2b950a8ab9cd79bd165d3dec031b9 100644 (file)
@@ -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;
index eb33442a44ce57f2bab30834dcd4b545c97ca964..dbc13c20c6e67c0c3cee33d0cdd6604c5bc05795 100644 (file)
@@ -146,6 +146,9 @@ protected:
       return typename InterruptorT::template futurize_t<ret_t>{std::move(ret)};
     }
   }
+
+public:
+  static constexpr bool is_trackable = true;
 };
 
 template <class T>
index e05868a964884b8f579df1801f582b7246a09969..5cd879912e5a112bf5a1f9110155fe6568909a74 100644 (file)
@@ -51,6 +51,7 @@ public:
     ShardServices &shard_services, Ref<PG> pg);
 
   std::tuple<
+    StartEvent,
     ConnectionPipeline::AwaitActive::BlockingEvent,
     ConnectionPipeline::AwaitMap::BlockingEvent,
     ConnectionPipeline::GetPG::BlockingEvent,
index 9d3079871585478ea271662738a5a2ceb1921084..e1c451be98ac6c09f30d3c03e7ee2d3ab6a112c4 100644 (file)
@@ -51,6 +51,7 @@ public:
     ShardServices &shard_services, Ref<PG> pg);
 
   std::tuple<
+    StartEvent,
     ConnectionPipeline::AwaitActive::BlockingEvent,
     ConnectionPipeline::AwaitMap::BlockingEvent,
     ConnectionPipeline::GetPG::BlockingEvent,
index 467a581c6dba86ba4d8f273b3dbe220857e9b56d..f9c61a53ff07ec6720e2103e8125e0dc12050a5f 100644 (file)
@@ -50,6 +50,7 @@ public:
     ShardServices &shard_services, Ref<PG> pg);
 
   std::tuple<
+    StartEvent,
     ConnectionPipeline::AwaitActive::BlockingEvent,
     ConnectionPipeline::AwaitMap::BlockingEvent,
     ConnectionPipeline::GetPG::BlockingEvent,
index 51914bfaedf81694d4d3e39d6d597a30cc7a6475..fc56e64eb1b974d7e025f92caed2878847266e75 100644 (file)
@@ -312,6 +312,9 @@ public:
 
     auto &opref = *op;
     auto id = op->get_id();
+    if constexpr (T::is_trackable) {
+      op->template track_event<typename T::StartEvent>();
+    }
     auto fut = opref.template enter_stage<>(
       opref.get_connection_pipeline().await_active
     ).then([this, &opref, &logger] {