From: Jason Dillaman Date: Tue, 21 Feb 2017 16:52:00 +0000 (-0500) Subject: rbd-mirror: replace complex object op tuple with struct X-Git-Tag: v10.2.7~18^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=37bbc95d56f73e4ec9c6e13ddbae199b14b104b4;p=ceph.git rbd-mirror: replace complex object op tuple with struct Signed-off-by: Jason Dillaman (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 --- diff --git a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc index 5c024738e1f9..06b69137164d 100644 --- a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc +++ b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.cc @@ -104,17 +104,16 @@ void ObjectCopyRequest::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::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::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); } } diff --git a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h index 83fe16c52c92..74f3d513c42e 100644 --- a/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h +++ b/src/tools/rbd_mirror/image_sync/ObjectCopyRequest.h @@ -11,7 +11,6 @@ #include #include #include -#include #include class Context; @@ -81,7 +80,18 @@ private: SYNC_OP_TYPE_REMOVE }; - typedef std::tuple 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 SyncOps; typedef std::map SnapSyncOps; typedef std::map SnapObjectStates;