]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: expose the non-MOSDOp-taking variant of do_osd_ops() externally.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 30 Mar 2021 18:38:47 +0000 (18:38 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 10 May 2021 16:03:55 +0000 (18:03 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/pg.cc
src/crimson/osd/pg.h

index feb477439056c7eff532c1464ebaf3342805e9fc..be22c72c398d5d11bd2c1745b85f77b842a2c07e 100644 (file)
@@ -803,6 +803,26 @@ PG::do_osd_ops(
   ).finally([ox_deleter=std::move(ox)] {});
 }
 
+PG::do_osd_ops_iertr::future<>
+PG::do_osd_ops(
+  ObjectContextRef obc,
+  std::vector<OSDOp> ops,
+  const OpInfo &op_info,
+  const do_osd_ops_params_t& msg_params,
+  do_osd_ops_success_func_t success_func,
+  do_osd_ops_failure_func_t failure_func)
+{
+  auto ox = std::make_unique<OpsExecuter>(
+    std::move(obc), op_info, get_pool().info, get_backend(), msg_params);
+  return do_osd_ops_execute<void>(
+    std::move(*ox),
+    std::move(ops),
+    std::as_const(op_info),
+    std::move(success_func),
+    std::move(failure_func)
+  ).finally([ox_deleter=std::move(ox)] {});
+}
+
 PG::interruptible_future<Ref<MOSDOpReply>> PG::do_pg_ops(Ref<MOSDOp> m)
 {
   if (__builtin_expect(stopping, false)) {
index 2d109e77fa4bbd9a1b360d82f2bcae06997a18ed..d7f9b2a88e5298bcd46b3e4935c3f1cc13adf482 100644 (file)
@@ -577,6 +577,18 @@ private:
     Ref<MOSDOp> m,
     ObjectContextRef obc,
     const OpInfo &op_info);
+  using do_osd_ops_success_func_t =
+    std::function<do_osd_ops_iertr::future<>()>;
+  using do_osd_ops_failure_func_t =
+    std::function<do_osd_ops_iertr::future<>(const std::error_code&)>;
+  struct do_osd_ops_params_t;
+  do_osd_ops_iertr::future<> do_osd_ops(
+    ObjectContextRef obc,
+    std::vector<OSDOp> ops,
+    const OpInfo &op_info,
+    const do_osd_ops_params_t& params,
+    do_osd_ops_success_func_t success_func,
+    do_osd_ops_failure_func_t failure_func);
   template <class Ret, class SuccessFunc, class FailureFunc>
   do_osd_ops_iertr::future<Ret> do_osd_ops_execute(
     OpsExecuter&& ox,
@@ -750,6 +762,29 @@ private:
   friend class IOInterruptCondition;
 };
 
+struct PG::do_osd_ops_params_t {
+  crimson::net::ConnectionRef get_connection() const {
+    return nullptr;
+  }
+  osd_reqid_t get_reqid() const {
+    return reqid;
+  }
+  epoch_t get_map_epoch() const {
+    return map_epoch;
+  }
+  entity_inst_t get_orig_source_inst() const {
+    return orig_source_inst;
+  }
+  uint64_t get_features() const {
+    return features;
+  }
+  crimson::net::ConnectionRef conn;
+  osd_reqid_t reqid;
+  epoch_t map_epoch;
+  entity_inst_t orig_source_inst;
+  uint64_t features;
+};
+
 std::ostream& operator<<(std::ostream&, const PG& pg);
 
 }