]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: modify start_pg_operation to return op_id
authorSamuel Just <sjust@redhat.com>
Mon, 1 Aug 2022 23:20:02 +0000 (23:20 +0000)
committerSamuel Just <sjust@redhat.com>
Tue, 27 Sep 2022 02:31:16 +0000 (19:31 -0700)
The op will actually be run generally on a different core, so we don't
want to be returning a reference to it.

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

index e079502cbf5187578ce7cfa5679b173926b55ca2..6a6a48a2fd919e3b4fdf0c53d90e4baa76d2a066 100644 (file)
@@ -310,7 +310,8 @@ private:
 class Operation : public boost::intrusive_ref_counter<
   Operation, boost::thread_unsafe_counter> {
  public:
-  uint64_t get_id() const {
+  using id_t = uint64_t;
+  id_t get_id() const {
     return id;
   }
 
@@ -327,8 +328,8 @@ class Operation : public boost::intrusive_ref_counter<
 
   registry_hook_t registry_hook;
 
-  uint64_t id = 0;
-  void set_id(uint64_t in_id) {
+  id_t id = 0;
+  void set_id(id_t in_id) {
     id = in_id;
   }
 
index 5b32454c40fe3f6fcdd342948894bd21073685b9..a30b03b1a01ce88054c1b7a73c104008dcaa1ede 100644 (file)
@@ -60,13 +60,13 @@ public:
   }
 };
 
-std::vector<crimson::OperationRef> handle_pg_create(
+std::vector<crimson::Operation::id_t> handle_pg_create(
   PGShardManager &pg_shard_manager,
   crimson::net::ConnectionRef conn,
   compound_state_ref state,
   Ref<MOSDPGCreate2> m)
 {
-  std::vector<crimson::OperationRef> ret;
+  std::vector<crimson::Operation::id_t> ret;
   for (auto& [pgid, when] : m->pgs) {
     const auto &[created, created_stamp] = when;
     auto q = m->pg_extra.find(pgid);
@@ -85,7 +85,7 @@ std::vector<crimson::OperationRef> handle_pg_create(
         pgid, m->epoch,
         pi, history);
     } else {
-      auto op = pg_shard_manager.start_pg_operation<PeeringSubEvent>(
+      auto [op_id, fut] = pg_shard_manager.start_pg_operation<PeeringSubEvent>(
          state,
          conn,
          pg_shard_t(),
@@ -94,8 +94,8 @@ std::vector<crimson::OperationRef> handle_pg_create(
          m->epoch,
          NullEvt(),
          true,
-         new PGCreateInfo(pgid, m->epoch, history, pi, true)).first;
-      ret.push_back(op);
+         new PGCreateInfo(pgid, m->epoch, history, pi, true));
+      ret.push_back(op_id);
     }
   }
   return ret;
index 4e45de82353f825cf4ac727e720837e1503aa286..4fbc3ffb278930063586b58df77180d885851038 100644 (file)
@@ -27,15 +27,15 @@ public:
   struct SubOpBlocker : crimson::BlockerT<SubOpBlocker> {
     static constexpr const char * type_name = "CompoundOpBlocker";
 
-    std::vector<crimson::OperationRef> subops;
-    SubOpBlocker(std::vector<crimson::OperationRef> &&subops)
+    std::vector<crimson::Operation::id_t> subops;
+    SubOpBlocker(std::vector<crimson::Operation::id_t> &&subops)
       : subops(subops) {}
 
     virtual void dump_detail(Formatter *f) const {
       f->open_array_section("dependent_operations");
       {
         for (auto &i : subops) {
-          i->dump_brief(f);
+          f->dump_unsigned("op_id", i);
         }
       }
       f->close_section();