]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: replace complex object op tuple with struct
authorJason Dillaman <dillaman@redhat.com>
Tue, 21 Feb 2017 16:52:00 +0000 (11:52 -0500)
committerJason Dillaman <dillaman@redhat.com>
Wed, 22 Feb 2017 19:08:57 +0000 (14:08 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 0c181527c0e151784a0f7c466aaa70b0772f91b1)

Conflicts:
src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc: sparse reads not supported
src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h: sparse reads not supported

src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc
src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h

index 5c024738e1f9265f81dba25749135117aa8047fd..06b69137164de888869438e9ed8f83e2cdac5858 100644 (file)
@@ -104,17 +104,16 @@ void ObjectCopyRequest<I>::send_read_object() {
   bool read_required = false;
   librados::ObjectReadOperation op;
   for (auto &sync_op : sync_ops) {
-    switch (std::get<0>(sync_op)) {
+    switch (sync_op.type) {
     case SYNC_OP_TYPE_WRITE:
       if (!read_required) {
         dout(20) << ": remote_snap_seq=" << remote_snap_seq << dendl;
         read_required = true;
       }
 
-      dout(20) << ": read op: " << std::get<1>(sync_op) << "~"
-               << std::get<2>(sync_op) << dendl;
-      op.read(std::get<1>(sync_op), std::get<2>(sync_op),
-              &std::get<3>(sync_op), nullptr);
+      dout(20) << ": read op: " << sync_op.offset << "~" << sync_op.length
+               << dendl;
+      op.read(sync_op.offset, sync_op.length, &sync_op.out_bl, nullptr);
       break;
     default:
       break;
@@ -176,15 +175,15 @@ void ObjectCopyRequest<I>::send_write_object() {
 
   librados::ObjectWriteOperation op;
   for (auto &sync_op : sync_ops) {
-    switch (std::get<0>(sync_op)) {
+    switch (sync_op.type) {
     case SYNC_OP_TYPE_WRITE:
-      dout(20) << ": write op: " << std::get<1>(sync_op) << "~"
-               << std::get<3>(sync_op).length() << dendl;
-      op.write(std::get<1>(sync_op), std::get<3>(sync_op));
+      dout(20) << ": write op: " << sync_op.offset << "~"
+               << sync_op.out_bl.length() << dendl;
+      op.write(sync_op.offset, sync_op.out_bl);
       break;
     case SYNC_OP_TYPE_TRUNC:
-      dout(20) << ": trunc op: " << std::get<1>(sync_op) << dendl;
-      op.truncate(std::get<1>(sync_op));
+      dout(20) << ": trunc op: " << sync_op.offset << dendl;
+      op.truncate(sync_op.offset);
       break;
     case SYNC_OP_TYPE_REMOVE:
       dout(20) << ": remove op" << dendl;
@@ -329,21 +328,19 @@ void ObjectCopyRequest<I>::compute_diffs() {
                  << it.get_len() << dendl;
         m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_WRITE,
                                                          it.get_start(),
-                                                         it.get_len(),
-                                                         bufferlist());
+                                                         it.get_len());
       }
       if (end_size < prev_end_size) {
         dout(20) << ": trunc op: " << end_size << dendl;
         m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_TRUNC,
-                                                         end_size, 0U,
-                                                         bufferlist());
+                                                         end_size, 0U);
       }
     } else {
       if (prev_exists) {
         // object remove
         dout(20) << ": remove op" << dendl;
         m_snap_sync_ops[end_remote_snap_id].emplace_back(SYNC_OP_TYPE_REMOVE,
-                                                         0U, 0U, bufferlist());
+                                                         0U, 0U);
       }
     }
 
index 83fe16c52c92ccbc56766ed0314e294a9aa5b8ec..74f3d513c42e8510a07f54d6775da3bdac9c1e18 100644 (file)
@@ -11,7 +11,6 @@
 #include <list>
 #include <map>
 #include <string>
-#include <tuple>
 #include <vector>
 
 class Context;
@@ -81,7 +80,18 @@ private:
     SYNC_OP_TYPE_REMOVE
   };
 
-  typedef std::tuple<SyncOpType, uint64_t, uint64_t, bufferlist> SyncOp;
+  struct SyncOp {
+    SyncOp(SyncOpType type, uint64_t offset, uint64_t length)
+      : type(type), offset(offset), length(length) {
+    }
+
+    SyncOpType type;
+    uint64_t offset;
+    uint64_t length;
+
+    bufferlist out_bl;
+  };
+
   typedef std::list<SyncOp> SyncOps;
   typedef std::map<librados::snap_t, SyncOps> SnapSyncOps;
   typedef std::map<librados::snap_t, uint8_t> SnapObjectStates;