]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/operation/MigrateRequest.cc
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / librbd / operation / MigrateRequest.cc
index 65255b22abce4b154cce0f1dc99422b8804153c1..2b9adb7737807d13d125ff0849e2992349e10761 100644 (file)
@@ -10,7 +10,7 @@
 #include "librbd/Utils.h"
 #include "librbd/deep_copy/ObjectCopyRequest.h"
 #include "librbd/io/AsyncOperation.h"
-#include "librbd/io/ImageRequestWQ.h"
+#include "librbd/io/ImageDispatcherInterface.h"
 #include "librbd/io/ObjectRequest.h"
 #include "osdc/Striper.h"
 #include <boost/lambda/bind.hpp>
@@ -33,8 +33,8 @@ template <typename I>
 class C_MigrateObject : public C_AsyncObjectThrottle<I> {
 public:
   C_MigrateObject(AsyncObjectThrottle<I> &throttle, I *image_ctx,
-                  ::SnapContext snapc, uint64_t object_no)
-    : C_AsyncObjectThrottle<I>(throttle, *image_ctx), m_snapc(snapc),
+                  IOContext io_context, uint64_t object_no)
+    : C_AsyncObjectThrottle<I>(throttle, *image_ctx), m_io_context(io_context),
       m_object_no(object_no) {
   }
 
@@ -54,7 +54,7 @@ public:
   }
 
 private:
-  ::SnapContext m_snapc;
+  IOContext m_io_context;
   uint64_t m_object_no;
 
   io::AsyncOperation *m_async_op = nullptr;
@@ -69,7 +69,7 @@ private:
     m_async_op = new io::AsyncOperation();
     m_async_op->start_op(image_ctx);
 
-    if (!image_ctx.io_work_queue->writes_blocked()) {
+    if (!image_ctx.io_image_dispatcher->writes_blocked()) {
       migrate_object();
       return;
     }
@@ -80,7 +80,7 @@ private:
     m_async_op->finish_op();
     delete m_async_op;
     m_async_op = nullptr;
-    image_ctx.io_work_queue->wait_on_writes_unblocked(ctx);
+    image_ctx.io_image_dispatcher->wait_on_writes_unblocked(ctx);
   }
 
   void handle_start_async_op(int r) {
@@ -118,8 +118,8 @@ private:
     if (is_within_overlap_bounds()) {
       bufferlist bl;
       auto req = new io::ObjectWriteRequest<I>(&image_ctx, m_object_no, 0,
-                                               std::move(bl), m_snapc, 0, {},
-                                               ctx);
+                                               std::move(bl), m_io_context, 0,
+                                               0, std::nullopt, {}, ctx);
 
       ldout(cct, 20) << "copyup object req " << req << ", object_no "
                      << m_object_no << dendl;
@@ -197,7 +197,8 @@ void MigrateRequest<I>::migrate_objects() {
 
   typename AsyncObjectThrottle<I>::ContextFactory context_factory(
     boost::lambda::bind(boost::lambda::new_ptr<C_MigrateObject<I> >(),
-      boost::lambda::_1, &image_ctx, image_ctx.snapc, boost::lambda::_2));
+      boost::lambda::_1, &image_ctx, image_ctx.get_data_io_context(),
+      boost::lambda::_2));
   AsyncObjectThrottle<I> *throttle = new AsyncObjectThrottle<I>(
     this, image_ctx, context_factory, ctx, &m_prog_ctx, 0, overlap_objects);
   throttle->start_ops(