]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc: Interface to submit IO with ASIO Post.
authorAlex Ainscow <aainscow@uk.ibm.com>
Fri, 3 Oct 2025 13:55:56 +0000 (14:55 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Wed, 26 Nov 2025 11:28:25 +0000 (11:28 +0000)
For direct read failures, the locking is such that we cannot
immediately send a new IO without deadlocking. This new interface
allows an op to be sent as an asio post.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
src/osdc/Objecter.cc
src/osdc/Objecter.h

index bf3c626aa249aefe6ca51b0d6f7158a8365577cb..ee5018cdca1af6f458817a6432017d976010e4a1 100644 (file)
@@ -2337,6 +2337,13 @@ void Objecter::resend_mon_ops()
 
 // read | write ---------------------------
 
+
+void Objecter::op_post_submit(Op* op) {
+  boost::asio::post(service, [this, op]() {
+    op_submit(op);
+  });
+}
+
 void Objecter::op_submit(Op *op, ceph_tid_t *ptid, int *ctx_budget)
 {
   shunique_lock rl(rwlock, ceph::acquire_shared);
index e8e24e87a940d248f8c58ffa859571fe053fd035..4a72662e0c79529a777b7454261cf19b9e86aa32 100644 (file)
@@ -2808,6 +2808,7 @@ private:
                              int *ctx_budget = NULL);
   // public interface
 public:
+  void op_post_submit(Op *op);
   void op_submit(Op *op, ceph_tid_t *ptid = NULL, int *ctx_budget = NULL);
   bool is_active() {
     std::shared_lock l(rwlock);