]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: use strand template and make_strand()
authorCasey Bodley <cbodley@redhat.com>
Fri, 10 Feb 2023 15:36:57 +0000 (10:36 -0500)
committerAdam Emerson <aemerson@redhat.com>
Thu, 14 Sep 2023 21:21:20 +0000 (17:21 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/librbd/AsioEngine.cc
src/librbd/AsioEngine.h
src/librbd/asio/ContextWQ.cc
src/librbd/asio/ContextWQ.h
src/librbd/migration/QCOWFormat.cc
src/librbd/migration/QCOWFormat.h

index 8e2beb49cfd91db696e689aeb280d8cf90086c83..ad0051efa8e51cfc1d03d2b27ae034769e86784e 100644 (file)
@@ -20,8 +20,8 @@ AsioEngine::AsioEngine(std::shared_ptr<librados::Rados> rados)
       neorados::RADOS::make_with_librados(*rados))),
     m_cct(m_rados_api->cct()),
     m_io_context(m_rados_api->get_io_context()),
-    m_api_strand(std::make_unique<boost::asio::io_context::strand>(
-      m_io_context)),
+    m_api_strand(std::make_unique<boost::asio::strand<executor_type>>(
+      boost::asio::make_strand(m_io_context))),
     m_context_wq(std::make_unique<asio::ContextWQ>(m_cct, m_io_context)) {
   ldout(m_cct, 20) << dendl;
 
index 0f476d80b2a47f67dd54c8ef4516ee6430ade828..6f2f22413c17aaf000793ab35f55964c1229a5b1 100644 (file)
@@ -9,7 +9,7 @@
 #include <memory>
 #include <boost/asio/dispatch.hpp>
 #include <boost/asio/io_context.hpp>
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/strand.hpp>
 #include <boost/asio/post.hpp>
 
 struct Context;
@@ -45,7 +45,7 @@ public:
     return m_io_context.get_executor();
   }
 
-  inline boost::asio::io_context::strand& get_api_strand() {
+  inline boost::asio::strand<executor_type>& get_api_strand() {
     // API client callbacks should never fire concurrently
     return *m_api_strand;
   }
@@ -71,7 +71,7 @@ private:
   CephContext* m_cct;
 
   boost::asio::io_context& m_io_context;
-  std::unique_ptr<boost::asio::io_context::strand> m_api_strand;
+  std::unique_ptr<boost::asio::strand<executor_type>> m_api_strand;
   std::unique_ptr<asio::ContextWQ> m_context_wq;
 };
 
index 4f6c7277080621ebe4f485c256a39629432e1772..80c650935d4c1b7f71b926eb785eea99f526c7b2 100644 (file)
@@ -16,7 +16,8 @@ namespace asio {
 
 ContextWQ::ContextWQ(CephContext* cct, boost::asio::io_context& io_context)
   : m_cct(cct), m_io_context(io_context),
-    m_strand(std::make_unique<boost::asio::io_context::strand>(io_context)),
+    m_strand(std::make_unique<boost::asio::strand<executor_type>>(
+      boost::asio::make_strand(io_context))),
     m_queued_ops(0) {
   ldout(m_cct, 20) << dendl;
 }
index 85c254161213770c50749e355c651f863b0ed774..3db5008d40a94d515aca3d2b5c9af7e7b9aa123c 100644 (file)
@@ -9,7 +9,7 @@
 #include <atomic>
 #include <memory>
 #include <boost/asio/io_context.hpp>
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/strand.hpp>
 #include <boost/asio/post.hpp>
 
 namespace librbd {
@@ -38,7 +38,8 @@ public:
 private:
   CephContext* m_cct;
   boost::asio::io_context& m_io_context;
-  std::unique_ptr<boost::asio::io_context::strand> m_strand;
+  using executor_type = boost::asio::io_context::executor_type;
+  std::unique_ptr<boost::asio::strand<executor_type>> m_strand;
 
   std::atomic<uint64_t> m_queued_ops;
 
index 300bb712335eee28a4163230800a363d9e916139..b2e277ad3762ea381dd142c4721e69e30ec985f0 100644 (file)
@@ -125,7 +125,8 @@ class QCOWFormat<I>::ClusterCache {
 public:
   ClusterCache(QCOWFormat* qcow_format)
     : qcow_format(qcow_format),
-      m_strand(*qcow_format->m_image_ctx->asio_engine) {
+      m_strand(boost::asio::make_strand(
+        *qcow_format->m_image_ctx->asio_engine)) {
   }
 
   void get_cluster(uint64_t cluster_offset, uint64_t cluster_length,
@@ -149,7 +150,7 @@ private:
   typedef std::list<Completion> Completions;
 
   QCOWFormat* qcow_format;
-  boost::asio::io_context::strand m_strand;
+  boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
 
   std::shared_ptr<Cluster> cluster;
   std::unordered_map<uint64_t, Completions> cluster_completions;
@@ -256,7 +257,8 @@ class QCOWFormat<I>::L2TableCache {
 public:
   L2TableCache(QCOWFormat* qcow_format)
     : qcow_format(qcow_format),
-      m_strand(*qcow_format->m_image_ctx->asio_engine),
+      m_strand(boost::asio::make_strand(
+        *qcow_format->m_image_ctx->asio_engine)),
       l2_cache_entries(QCOW_L2_CACHE_SIZE) {
   }
 
@@ -316,7 +318,7 @@ public:
 private:
   QCOWFormat* qcow_format;
 
-  boost::asio::io_context::strand m_strand;
+  boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
 
   struct Request {
     const LookupTable* l1_table;
@@ -832,7 +834,7 @@ QCOWFormat<I>::QCOWFormat(
     const SourceSpecBuilder<I>* source_spec_builder)
   : m_image_ctx(image_ctx), m_json_object(json_object),
     m_source_spec_builder(source_spec_builder),
-    m_strand(*image_ctx->asio_engine) {
+    m_strand(boost::asio::make_strand(*image_ctx->asio_engine)) {
 }
 
 template <typename I>
index b365067165026565c1febb3106f1e08ecc2bd1c4..3b355628cd2cb8327ea43ca1964ac3aeadf2c0e7 100644 (file)
@@ -10,7 +10,8 @@
 #include "librbd/migration/QCOW.h"
 #include "acconfig.h"
 #include "json_spirit/json_spirit.h"
-#include <boost/asio/io_context_strand.hpp>
+#include <boost/asio/io_context.hpp>
+#include <boost/asio/strand.hpp>
 #include <boost/iostreams/filter/zlib.hpp>
 #include <deque>
 #include <vector>
@@ -142,7 +143,7 @@ private:
   json_spirit::mObject m_json_object;
   const SourceSpecBuilder<ImageCtxT>* m_source_spec_builder;
 
-  boost::asio::io_context::strand m_strand;
+  boost::asio::strand<boost::asio::io_context::executor_type> m_strand;
   std::shared_ptr<StreamInterface> m_stream;
 
   bufferlist m_bl;