]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson: keep do_osd_ops_params_t alive when call do_osd_ops 45820/head
authorchunmei-liu <chunmei.liu@intel.com>
Fri, 8 Apr 2022 00:35:37 +0000 (17:35 -0700)
committerchunmei-liu <chunmei.liu@intel.com>
Mon, 11 Apr 2022 23:30:49 +0000 (16:30 -0700)
otherwise stack-under-overflow

Signed-off-by: chunmei-liu <chunmei.liu@intel.com>
src/crimson/osd/pg.cc
src/crimson/osd/pg.h

index dadbc8dd54a5e7c581c62f12710155caefef2971..d51b939956e27616acc5af2900d54cf1269028ac 100644 (file)
@@ -810,17 +810,20 @@ PG::do_osd_ops(
   ObjectContextRef obc,
   std::vector<OSDOp>& ops,
   const OpInfo &op_info,
-  const do_osd_ops_params_tmsg_params,
+  const do_osd_ops_params_t &&msg_params,
   do_osd_ops_success_func_t success_func,
   do_osd_ops_failure_func_t failure_func)
 {
-  return do_osd_ops_execute<void>(
-    seastar::make_lw_shared<OpsExecuter>(
-      Ref<PG>{this}, std::move(obc), op_info, msg_params),
-    ops,
-    std::as_const(op_info),
-    std::move(success_func),
-    std::move(failure_func));
+  return seastar::do_with(std::move(msg_params), [=, &ops, &op_info]
+    (auto &msg_params) {
+    return do_osd_ops_execute<void>(
+      seastar::make_lw_shared<OpsExecuter>(
+        Ref<PG>{this}, std::move(obc), op_info, msg_params),
+      ops,
+      std::as_const(op_info),
+      std::move(success_func),
+      std::move(failure_func));
+  });
 }
 
 PG::interruptible_future<MURef<MOSDOpReply>> PG::do_pg_ops(Ref<MOSDOp> m)
index 776cdd635565f28cb16e417b32c471d4cd97cb77..18aa9ede7b9380075ee97633d86a3be4766707aa 100644 (file)
@@ -592,7 +592,7 @@ private:
     ObjectContextRef obc,
     std::vector<OSDOp>& ops,
     const OpInfo &op_info,
-    const do_osd_ops_params_tparams,
+    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>