From f5a93d68027e6a33b629962e4116a00e63a76617 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Tue, 7 May 2019 16:49:54 -0400 Subject: [PATCH] librbd: drop data oid parameter from IO path Signed-off-by: Jason Dillaman --- .../cache/ObjectCacherObjectDispatch.cc | 50 +++--- src/librbd/cache/ObjectCacherObjectDispatch.h | 23 ++- src/librbd/cache/ObjectCacherWriteback.cc | 8 +- src/librbd/cache/WriteAroundObjectDispatch.cc | 42 ++--- src/librbd/cache/WriteAroundObjectDispatch.h | 23 ++- src/librbd/io/CopyupRequest.cc | 41 ++--- src/librbd/io/CopyupRequest.h | 11 +- src/librbd/io/ImageRequest.cc | 42 +++-- src/librbd/io/ObjectDispatch.cc | 62 +++---- src/librbd/io/ObjectDispatch.h | 21 ++- src/librbd/io/ObjectDispatchInterface.h | 28 ++-- src/librbd/io/ObjectDispatchSpec.h | 97 +++++------ src/librbd/io/ObjectDispatcher.cc | 28 ++-- src/librbd/io/ObjectRequest.cc | 119 ++++++-------- src/librbd/io/ObjectRequest.h | 115 ++++++------- .../io/SimpleSchedulerObjectDispatch.cc | 53 +++--- src/librbd/io/SimpleSchedulerObjectDispatch.h | 23 ++- src/librbd/journal/ObjectDispatch.cc | 32 ++-- src/librbd/journal/ObjectDispatch.h | 23 ++- src/librbd/operation/FlattenRequest.cc | 3 +- src/librbd/operation/MigrateRequest.cc | 3 +- src/librbd/operation/TrimRequest.cc | 6 +- .../test_mock_WriteAroundObjectDispatch.cc | 46 +++--- src/test/librbd/io/test_mock_CopyupRequest.cc | 94 ++++++----- src/test/librbd/io/test_mock_ObjectRequest.cc | 98 +++++------ ...test_mock_SimpleSchedulerObjectDispatch.cc | 154 +++++++++--------- src/test/librbd/mock/io/MockObjectDispatch.h | 21 ++- 27 files changed, 606 insertions(+), 660 deletions(-) diff --git a/src/librbd/cache/ObjectCacherObjectDispatch.cc b/src/librbd/cache/ObjectCacherObjectDispatch.cc index e628a5f04dc9a..d6e8410104643 100644 --- a/src/librbd/cache/ObjectCacherObjectDispatch.cc +++ b/src/librbd/cache/ObjectCacherObjectDispatch.cc @@ -23,6 +23,8 @@ namespace librbd { namespace cache { +using librbd::util::data_object_name; + namespace { typedef std::vector ObjectExtents; @@ -178,12 +180,11 @@ void ObjectCacherObjectDispatch::shut_down(Context* on_finish) { template bool ObjectCacherObjectDispatch::read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, - io::ExtentMap* extent_map, int* object_dispatch_flags, - io::DispatchResult* dispatch_result, Context** on_finish, - Context* on_dispatched) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, + ceph::bufferlist* read_data, io::ExtentMap* extent_map, + int* object_dispatch_flags, io::DispatchResult* dispatch_result, + Context** on_finish, Context* on_dispatched) { // IO chained in reverse order auto cct = m_image_ctx->cct; ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" @@ -197,7 +198,8 @@ bool ObjectCacherObjectDispatch::read( auto rd = m_object_cacher->prepare_read(snap_id, read_data, op_flags); m_image_ctx->image_lock.put_read(); - ObjectExtent extent(oid, object_no, object_off, object_len, 0); + ObjectExtent extent(data_object_name(m_image_ctx, object_no), object_no, + object_off, object_len, 0); extent.oloc.pool = m_image_ctx->data_ctx.get_id(); extent.buffer_extents.push_back({0, object_len}); rd->extents.push_back(extent); @@ -216,8 +218,8 @@ bool ObjectCacherObjectDispatch::read( template bool ObjectCacherObjectDispatch::discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -226,7 +228,8 @@ bool ObjectCacherObjectDispatch::discard( << object_len << dendl; ObjectExtents object_extents; - object_extents.emplace_back(oid, object_no, object_off, object_len, 0); + object_extents.emplace_back(data_object_name(m_image_ctx, object_no), + object_no, object_off, object_len, 0); // discard the cache state after changes are committed to disk (and to // prevent races w/ readahead) @@ -257,8 +260,8 @@ bool ObjectCacherObjectDispatch::discard( template bool ObjectCacherObjectDispatch::write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -275,7 +278,8 @@ bool ObjectCacherObjectDispatch::write( snapc, data, ceph::real_time::min(), op_flags, *journal_tid); m_image_ctx->image_lock.put_read(); - ObjectExtent extent(oid, 0, object_off, data.length(), 0); + ObjectExtent extent(data_object_name(m_image_ctx, object_no), + object_no, object_off, data.length(), 0); extent.oloc.pool = m_image_ctx->data_ctx.get_id(); extent.buffer_extents.push_back({0, data.length()}); wr->extents.push_back(extent); @@ -291,8 +295,8 @@ bool ObjectCacherObjectDispatch::write( template bool ObjectCacherObjectDispatch::write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, @@ -302,22 +306,22 @@ bool ObjectCacherObjectDispatch::write_same( << object_len << dendl; // ObjectCacher doesn't support write-same so convert to regular write - ObjectExtent extent(oid, 0, object_off, object_len, 0); + ObjectExtent extent(data_object_name(m_image_ctx, object_no), object_no, + object_off, object_len, 0); extent.buffer_extents = std::move(buffer_extents); bufferlist ws_data; io::util::assemble_write_same_extent(extent, data, &ws_data, true); - return write(oid, object_no, object_off, std::move(ws_data), snapc, - op_flags, parent_trace, object_dispatch_flags, journal_tid, + return write(object_no, object_off, std::move(ws_data), snapc, op_flags, + parent_trace, object_dispatch_flags, journal_tid, dispatch_result, on_finish, on_dispatched); } template bool ObjectCacherObjectDispatch::compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, @@ -338,8 +342,8 @@ bool ObjectCacherObjectDispatch::compare_and_write( *dispatch_result = io::DISPATCH_RESULT_CONTINUE; ObjectExtents object_extents; - object_extents.emplace_back(oid, object_no, object_off, cmp_data.length(), - 0); + object_extents.emplace_back(data_object_name(m_image_ctx, object_no), + object_no, object_off, cmp_data.length(), 0); Mutex::Locker cache_locker(m_cache_lock); m_object_cacher->flush_set(m_object_set, object_extents, &trace, diff --git a/src/librbd/cache/ObjectCacherObjectDispatch.h b/src/librbd/cache/ObjectCacherObjectDispatch.h index e01c7f700550c..3d19023bce432 100644 --- a/src/librbd/cache/ObjectCacherObjectDispatch.h +++ b/src/librbd/cache/ObjectCacherObjectDispatch.h @@ -42,39 +42,38 @@ public: void shut_down(Context* on_finish) override; bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, io::ExtentMap* extent_map, int* object_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/cache/ObjectCacherWriteback.cc b/src/librbd/cache/ObjectCacherWriteback.cc index b6aed2a7db7f8..a59203b322089 100644 --- a/src/librbd/cache/ObjectCacherWriteback.cc +++ b/src/librbd/cache/ObjectCacherWriteback.cc @@ -137,8 +137,8 @@ void ObjectCacherWriteback::read(const object_t& oid, uint64_t object_no, aio_comp, off, len, {{0, len}}); auto req = io::ObjectDispatchSpec::create_read( - m_ictx, io::OBJECT_DISPATCH_LAYER_CACHE, oid.name, object_no, off, len, - snapid, op_flags, trace, &req_comp->bl, &req_comp->extent_map, req_comp); + m_ictx, io::OBJECT_DISPATCH_LAYER_CACHE, object_no, off, len, snapid, + op_flags, trace, &req_comp->bl, &req_comp->extent_map, req_comp); req->send(); } @@ -196,8 +196,8 @@ ceph_tid_t ObjectCacherWriteback::write(const object_t& oid, ctx = util::create_async_context_callback(*m_ictx, ctx); auto req = io::ObjectDispatchSpec::create_write( - m_ictx, io::OBJECT_DISPATCH_LAYER_CACHE, oid.name, object_no, off, - std::move(bl_copy), snapc, 0, journal_tid, trace, ctx); + m_ictx, io::OBJECT_DISPATCH_LAYER_CACHE, object_no, off, std::move(bl_copy), + snapc, 0, journal_tid, trace, ctx); req->object_dispatch_flags = ( io::OBJECT_DISPATCH_FLAG_FLUSH | io::OBJECT_DISPATCH_FLAG_WILL_RETRY_ON_ERROR); diff --git a/src/librbd/cache/WriteAroundObjectDispatch.cc b/src/librbd/cache/WriteAroundObjectDispatch.cc index 22123dc216346..2e4380eeb8ba2 100644 --- a/src/librbd/cache/WriteAroundObjectDispatch.cc +++ b/src/librbd/cache/WriteAroundObjectDispatch.cc @@ -18,6 +18,8 @@ namespace librbd { namespace cache { +using librbd::util::data_object_name; + template WriteAroundObjectDispatch::WriteAroundObjectDispatch( I* image_ctx, size_t max_dirty, bool writethrough_until_flush) @@ -55,26 +57,25 @@ void WriteAroundObjectDispatch::shut_down(Context* on_finish) { template bool WriteAroundObjectDispatch::read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, - io::ExtentMap* extent_map, int* object_dispatch_flags, - io::DispatchResult* dispatch_result, Context** on_finish, - Context* on_dispatched) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, + ceph::bufferlist* read_data, io::ExtentMap* extent_map, + int* object_dispatch_flags, io::DispatchResult* dispatch_result, + Context** on_finish, Context* on_dispatched) { return dispatch_unoptimized_io(object_no, object_off, object_len, dispatch_result, on_dispatched); } template bool WriteAroundObjectDispatch::discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; return dispatch_io(object_no, object_off, object_len, 0, dispatch_result, on_finish, on_dispatched); @@ -82,14 +83,14 @@ bool WriteAroundObjectDispatch::discard( template bool WriteAroundObjectDispatch::write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << data.length() << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << data.length() << dendl; return dispatch_io(object_no, object_off, data.length(), op_flags, dispatch_result, on_finish, on_dispatched); @@ -97,15 +98,15 @@ bool WriteAroundObjectDispatch::write( template bool WriteAroundObjectDispatch::write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; return dispatch_io(object_no, object_off, object_len, 0, dispatch_result, on_finish, on_dispatched); @@ -113,9 +114,8 @@ bool WriteAroundObjectDispatch::write_same( template bool WriteAroundObjectDispatch::compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/cache/WriteAroundObjectDispatch.h b/src/librbd/cache/WriteAroundObjectDispatch.h index b9909b9db8fec..d47e0d0b08127 100644 --- a/src/librbd/cache/WriteAroundObjectDispatch.h +++ b/src/librbd/cache/WriteAroundObjectDispatch.h @@ -42,39 +42,38 @@ public: void shut_down(Context* on_finish) override; bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, io::ExtentMap* extent_map, int* object_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) override; bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) override; bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) override; bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/io/CopyupRequest.cc b/src/librbd/io/CopyupRequest.cc index 2a49dc7fd0b32..0f410966ad472 100644 --- a/src/librbd/io/CopyupRequest.cc +++ b/src/librbd/io/CopyupRequest.cc @@ -24,12 +24,15 @@ #define dout_subsys ceph_subsys_rbd #undef dout_prefix -#define dout_prefix *_dout << "librbd::io::CopyupRequest: " << this \ - << " " << __func__ << ": " +#define dout_prefix *_dout << "librbd::io::CopyupRequest: " << this \ + << " " << __func__ << ": " \ + << data_object_name(m_image_ctx, m_object_no) << " " namespace librbd { namespace io { +using librbd::util::data_object_name; + namespace { template @@ -108,11 +111,10 @@ private: } // anonymous namespace template -CopyupRequest::CopyupRequest(I *ictx, const std::string &oid, - uint64_t objectno, Extents &&image_extents, +CopyupRequest::CopyupRequest(I *ictx, uint64_t objectno, + Extents &&image_extents, const ZTracer::Trace &parent_trace) - : m_image_ctx(ictx), m_oid(oid), m_object_no(objectno), - m_image_extents(image_extents), + : m_image_ctx(ictx), m_object_no(objectno), m_image_extents(image_extents), m_trace(util::create_trace(*m_image_ctx, "copy-up", parent_trace)), m_lock("CopyupRequest", false, false) { @@ -130,8 +132,7 @@ void CopyupRequest::append_request(AbstractObjectWriteRequest *req) { Mutex::Locker locker(m_lock); auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << ", " - << "object_request=" << req << ", " + ldout(cct, 20) << "object_request=" << req << ", " << "append=" << m_append_request_permitted << dendl; if (m_append_request_permitted) { m_pending_requests.push_back(req); @@ -168,8 +169,7 @@ void CopyupRequest::read_from_parent() { &CopyupRequest::handle_read_from_parent>( this, util::get_image_ctx(m_image_ctx->parent), AIO_TYPE_READ); - ldout(cct, 20) << "oid=" << m_oid << ", " - << "completion=" << comp << ", " + ldout(cct, 20) << "completion=" << comp << ", " << "extents=" << m_image_extents << dendl; if (m_image_ctx->enable_sparse_copyup) { @@ -186,7 +186,7 @@ void CopyupRequest::read_from_parent() { template void CopyupRequest::handle_read_from_parent(int r) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << ", r=" << r << dendl; + ldout(cct, 20) << "r=" << r << dendl; m_image_ctx->image_lock.get_read(); m_lock.Lock(); @@ -235,7 +235,7 @@ void CopyupRequest::deep_copy() { m_flatten = is_copyup_required() ? true : m_image_ctx->migration_info.flatten; m_lock.Unlock(); - ldout(cct, 20) << "oid=" << m_oid << ", flatten=" << m_flatten << dendl; + ldout(cct, 20) << "flatten=" << m_flatten << dendl; auto ctx = util::create_context_callback< CopyupRequest, &CopyupRequest::handle_deep_copy>(this); @@ -249,7 +249,7 @@ void CopyupRequest::deep_copy() { template void CopyupRequest::handle_deep_copy(int r) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << ", r=" << r << dendl; + ldout(cct, 20) << "r=" << r << dendl; m_image_ctx->image_lock.get_read(); m_lock.Lock(); @@ -315,7 +315,7 @@ void CopyupRequest::update_object_maps() { } auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << dendl; + ldout(cct, 20) << dendl; bool copy_on_read = m_pending_requests.empty(); uint8_t head_object_map_state = OBJECT_EXISTS; @@ -354,7 +354,7 @@ void CopyupRequest::update_object_maps() { template void CopyupRequest::handle_update_object_maps(int r) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << ", r=" << r << dendl; + ldout(cct, 20) << "r=" << r << dendl; if (r < 0) { lderr(m_image_ctx->cct) << "failed to update object map: " @@ -383,7 +383,7 @@ void CopyupRequest::copyup() { return; } - ldout(cct, 20) << "oid=" << m_oid << dendl; + ldout(cct, 20) << dendl; bool copy_on_read = m_pending_requests.empty(); bool deep_copyup = !snapc.snaps.empty() && !m_copyup_is_zero; @@ -429,6 +429,7 @@ void CopyupRequest::copyup() { m_lock.Unlock(); // issue librados ops at the end to simplify test cases + std::string oid(data_object_name(m_image_ctx, m_object_no)); std::vector snaps; if (copyup_op.size() > 0) { // send only the copyup request with a blank snapshot context so that @@ -440,7 +441,7 @@ void CopyupRequest::copyup() { auto comp = util::create_rados_callback< CopyupRequest, &CopyupRequest::handle_copyup>(this); r = m_image_ctx->data_ctx.aio_operate( - m_oid, comp, ©up_op, 0, snaps, + oid, comp, ©up_op, 0, snaps, (m_trace.valid() ? m_trace.get_info() : nullptr)); ceph_assert(r == 0); comp->release(); @@ -458,7 +459,7 @@ void CopyupRequest::copyup() { auto comp = util::create_rados_callback< CopyupRequest, &CopyupRequest::handle_copyup>(this); r = m_image_ctx->data_ctx.aio_operate( - m_oid, comp, &write_op, snapc.seq, snaps, + oid, comp, &write_op, snapc.seq, snaps, (m_trace.valid() ? m_trace.get_info() : nullptr)); ceph_assert(r == 0); comp->release(); @@ -475,7 +476,7 @@ void CopyupRequest::handle_copyup(int r) { pending_copyups = --m_pending_copyups; } - ldout(cct, 20) << "oid=" << m_oid << ", " << "r=" << r << ", " + ldout(cct, 20) << "r=" << r << ", " << "pending=" << pending_copyups << dendl; if (r < 0 && r != -ENOENT) { @@ -491,7 +492,7 @@ void CopyupRequest::handle_copyup(int r) { template void CopyupRequest::finish(int r) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "oid=" << m_oid << ", r=" << r << dendl; + ldout(cct, 20) << "r=" << r << dendl; complete_requests(true, r); delete this; diff --git a/src/librbd/io/CopyupRequest.h b/src/librbd/io/CopyupRequest.h index d98d477620836..25f19e14c3147 100644 --- a/src/librbd/io/CopyupRequest.h +++ b/src/librbd/io/CopyupRequest.h @@ -29,15 +29,15 @@ template class AbstractObjectWriteRequest; template class CopyupRequest { public: - static CopyupRequest* create(ImageCtxT *ictx, const std::string &oid, - uint64_t objectno, Extents &&image_extents, + static CopyupRequest* create(ImageCtxT *ictx, uint64_t objectno, + Extents &&image_extents, const ZTracer::Trace &parent_trace) { - return new CopyupRequest(ictx, oid, objectno, std::move(image_extents), + return new CopyupRequest(ictx, objectno, std::move(image_extents), parent_trace); } - CopyupRequest(ImageCtxT *ictx, const std::string &oid, uint64_t objectno, - Extents &&image_extents, const ZTracer::Trace &parent_trace); + CopyupRequest(ImageCtxT *ictx, uint64_t objectno, Extents &&image_extents, + const ZTracer::Trace &parent_trace); ~CopyupRequest(); void append_request(AbstractObjectWriteRequest *req); @@ -80,7 +80,6 @@ private: typedef std::vector *> WriteRequests; ImageCtxT *m_image_ctx; - std::string m_oid; uint64_t m_object_no; Extents m_image_extents; ZTracer::Trace m_trace; diff --git a/src/librbd/io/ImageRequest.cc b/src/librbd/io/ImageRequest.cc index 50723eef18c1b..33bd92b91b9f9 100644 --- a/src/librbd/io/ImageRequest.cc +++ b/src/librbd/io/ImageRequest.cc @@ -97,10 +97,9 @@ void readahead(I *ictx, const Extents& image_extents) { object_extent.offset, object_extent.length); auto req = io::ObjectDispatchSpec::create_read( - ictx, io::OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, object_extent.length, - snap_id, 0, {}, &req_comp->read_data, &req_comp->extent_map, - req_comp); + ictx, io::OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, object_extent.length, snap_id, 0, {}, + &req_comp->read_data, &req_comp->extent_map, req_comp); req->send(); } } @@ -390,9 +389,9 @@ void ImageReadRequest::send_request() { aio_comp, extent.offset, extent.length, std::move(extent.buffer_extents)); auto req = ObjectDispatchSpec::create_read( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, extent.oid.name, - extent.objectno, extent.offset, extent.length, snap_id, m_op_flags, - this->m_trace, &req_comp->bl, &req_comp->extent_map, req_comp); + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, extent.objectno, extent.offset, + extent.length, snap_id, m_op_flags, this->m_trace, &req_comp->bl, + &req_comp->extent_map, req_comp); req->send(); } } @@ -549,9 +548,9 @@ ObjectDispatchSpec *ImageWriteRequest::create_object_request( bufferlist bl; assemble_extent(object_extent, &bl); auto req = ObjectDispatchSpec::create_write( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, std::move(bl), snapc, - m_op_flags, journal_tid, this->m_trace, on_finish); + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, std::move(bl), snapc, m_op_flags, journal_tid, + this->m_trace, on_finish); return req; } @@ -602,8 +601,8 @@ ObjectDispatchSpec *ImageDiscardRequest::create_object_request( uint64_t journal_tid, Context *on_finish) { I &image_ctx = this->m_image_ctx; auto req = ObjectDispatchSpec::create_discard( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, object_extent.length, snapc, + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, object_extent.length, snapc, OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE, journal_tid, this->m_trace, on_finish); return req; @@ -769,16 +768,16 @@ ObjectDispatchSpec *ImageWriteSameRequest::create_object_request( Extents buffer_extents{object_extent.buffer_extents}; req = ObjectDispatchSpec::create_write_same( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, object_extent.length, - std::move(buffer_extents), std::move(bl), snapc, m_op_flags, journal_tid, + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, object_extent.length, std::move(buffer_extents), + std::move(bl), snapc, m_op_flags, journal_tid, this->m_trace, on_finish); return req; } req = ObjectDispatchSpec::create_write( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, std::move(bl), snapc, - m_op_flags, journal_tid, this->m_trace, on_finish); + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, std::move(bl), snapc, m_op_flags, journal_tid, + this->m_trace, on_finish); return req; } @@ -843,10 +842,9 @@ ObjectDispatchSpec *ImageCompareAndWriteRequest::create_object_request( bufferlist bl; assemble_extent(object_extent, &bl); auto req = ObjectDispatchSpec::create_compare_and_write( - &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.oid.name, - object_extent.objectno, object_extent.offset, std::move(m_cmp_bl), - std::move(bl), snapc, m_mismatch_offset, m_op_flags, journal_tid, - this->m_trace, on_finish); + &image_ctx, OBJECT_DISPATCH_LAYER_NONE, object_extent.objectno, + object_extent.offset, std::move(m_cmp_bl), std::move(bl), snapc, + m_mismatch_offset, m_op_flags, journal_tid, this->m_trace, on_finish); return req; } diff --git a/src/librbd/io/ObjectDispatch.cc b/src/librbd/io/ObjectDispatch.cc index 85c8b034ec442..422c62ea0a3d4 100644 --- a/src/librbd/io/ObjectDispatch.cc +++ b/src/librbd/io/ObjectDispatch.cc @@ -5,6 +5,7 @@ #include "common/dout.h" #include "common/WorkQueue.h" #include "librbd/ImageCtx.h" +#include "librbd/Utils.h" #include "librbd/io/ObjectRequest.h" #define dout_subsys ceph_subsys_rbd @@ -15,6 +16,8 @@ namespace librbd { namespace io { +using librbd::util::data_object_name; + template ObjectDispatch::ObjectDispatch(I* image_ctx) : m_image_ctx(image_ctx) { @@ -30,17 +33,17 @@ void ObjectDispatch::shut_down(Context* on_finish) { template bool ObjectDispatch::read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, - ExtentMap* extent_map, int* object_dispatch_flags, - DispatchResult* dispatch_result, Context** on_finish, - Context* on_dispatched) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, + ceph::bufferlist* read_data, ExtentMap* extent_map, + int* object_dispatch_flags, DispatchResult* dispatch_result, + Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; *dispatch_result = DISPATCH_RESULT_COMPLETE; - auto req = new ObjectReadRequest(m_image_ctx, oid, object_no, object_off, + auto req = new ObjectReadRequest(m_image_ctx, object_no, object_off, object_len, snap_id, op_flags, parent_trace, read_data, extent_map, on_dispatched); @@ -50,35 +53,36 @@ bool ObjectDispatch::read( template bool ObjectDispatch::discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; *dispatch_result = DISPATCH_RESULT_COMPLETE; - auto req = new ObjectDiscardRequest(m_image_ctx, oid, object_no, - object_off, object_len, snapc, - discard_flags, parent_trace, - on_dispatched); + auto req = new ObjectDiscardRequest(m_image_ctx, object_no, object_off, + object_len, snapc, discard_flags, + parent_trace, on_dispatched); req->send(); return true; } template bool ObjectDispatch::write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << data.length() << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << data.length() << dendl; *dispatch_result = DISPATCH_RESULT_COMPLETE; - auto req = new ObjectWriteRequest(m_image_ctx, oid, object_no, object_off, + auto req = new ObjectWriteRequest(m_image_ctx, object_no, object_off, std::move(data), snapc, op_flags, parent_trace, on_dispatched); req->send(); @@ -87,17 +91,18 @@ bool ObjectDispatch::write( template bool ObjectDispatch::write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; *dispatch_result = DISPATCH_RESULT_COMPLETE; - auto req = new ObjectWriteSameRequest(m_image_ctx, oid, object_no, + auto req = new ObjectWriteSameRequest(m_image_ctx, object_no, object_off, object_len, std::move(data), snapc, op_flags, parent_trace, on_dispatched); @@ -107,19 +112,18 @@ bool ObjectDispatch::write_same( template bool ObjectDispatch::compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << write_data.length() - << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << write_data.length() << dendl; *dispatch_result = DISPATCH_RESULT_COMPLETE; - auto req = new ObjectCompareAndWriteRequest(m_image_ctx, oid, object_no, + auto req = new ObjectCompareAndWriteRequest(m_image_ctx, object_no, object_off, std::move(cmp_data), std::move(write_data), snapc, diff --git a/src/librbd/io/ObjectDispatch.h b/src/librbd/io/ObjectDispatch.h index 5957b2766113b..deb688541e9b1 100644 --- a/src/librbd/io/ObjectDispatch.h +++ b/src/librbd/io/ObjectDispatch.h @@ -34,39 +34,38 @@ public: void shut_down(Context* on_finish) override; bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, ExtentMap* extent_map, int* object_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/io/ObjectDispatchInterface.h b/src/librbd/io/ObjectDispatchInterface.h index a3d815c9c5f6a..ee91f9d042c37 100644 --- a/src/librbd/io/ObjectDispatchInterface.h +++ b/src/librbd/io/ObjectDispatchInterface.h @@ -28,39 +28,37 @@ struct ObjectDispatchInterface { virtual void shut_down(Context* on_finish) = 0; virtual bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, - ExtentMap* extent_map, int* object_dispatch_flags, - DispatchResult* dispatch_result, Context** on_finish, - Context* on_dispatched) = 0; + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags,const ZTracer::Trace &parent_trace, + ceph::bufferlist* read_data, ExtentMap* extent_map, + int* object_dispatch_flags, DispatchResult* dispatch_result, + Context** on_finish, Context* on_dispatched) = 0; virtual bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) = 0; virtual bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) = 0; virtual bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context**on_finish, Context* on_dispatched) = 0; virtual bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/io/ObjectDispatchSpec.h b/src/librbd/io/ObjectDispatchSpec.h index 8580796cfe112..a8c0660422d8a 100644 --- a/src/librbd/io/ObjectDispatchSpec.h +++ b/src/librbd/io/ObjectDispatchSpec.h @@ -35,12 +35,11 @@ private: public: struct RequestBase { - std::string oid; uint64_t object_no; uint64_t object_off; - RequestBase(const std::string& oid, uint64_t object_no, uint64_t object_off) - : oid(oid), object_no(object_no), object_off(object_off) { + RequestBase(uint64_t object_no, uint64_t object_off) + : object_no(object_no), object_off(object_off) { } }; @@ -50,10 +49,10 @@ public: ceph::bufferlist* read_data; ExtentMap* extent_map; - ReadRequest(const std::string& oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, - ceph::bufferlist* read_data, ExtentMap* extent_map) - : RequestBase(oid, object_no, object_off), + ReadRequest(uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, ceph::bufferlist* read_data, + ExtentMap* extent_map) + : RequestBase(object_no, object_off), object_len(object_len), snap_id(snap_id), read_data(read_data), extent_map(extent_map) { } @@ -63,10 +62,9 @@ public: ::SnapContext snapc; uint64_t journal_tid; - WriteRequestBase(const std::string& oid, uint64_t object_no, - uint64_t object_off, const ::SnapContext& snapc, - uint64_t journal_tid) - : RequestBase(oid, object_no, object_off), snapc(snapc), + WriteRequestBase(uint64_t object_no, uint64_t object_off, + const ::SnapContext& snapc, uint64_t journal_tid) + : RequestBase(object_no, object_off), snapc(snapc), journal_tid(journal_tid) { } }; @@ -75,11 +73,10 @@ public: uint64_t object_len; int discard_flags; - DiscardRequest(const std::string& oid, uint64_t object_no, - uint64_t object_off, uint64_t object_len, + DiscardRequest(uint64_t object_no, uint64_t object_off, uint64_t object_len, int discard_flags, const ::SnapContext& snapc, uint64_t journal_tid) - : WriteRequestBase(oid, object_no, object_off, snapc, journal_tid), + : WriteRequestBase(object_no, object_off, snapc, journal_tid), object_len(object_len), discard_flags(discard_flags) { } }; @@ -87,10 +84,10 @@ public: struct WriteRequest : public WriteRequestBase { ceph::bufferlist data; - WriteRequest(const std::string& oid, uint64_t object_no, - uint64_t object_off, ceph::bufferlist&& data, - const ::SnapContext& snapc, uint64_t journal_tid) - : WriteRequestBase(oid, object_no, object_off, snapc, journal_tid), + WriteRequest(uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& data, const ::SnapContext& snapc, + uint64_t journal_tid) + : WriteRequestBase(object_no, object_off, snapc, journal_tid), data(std::move(data)) { } }; @@ -100,11 +97,11 @@ public: Extents buffer_extents; ceph::bufferlist data; - WriteSameRequest(const std::string& oid, uint64_t object_no, - uint64_t object_off, uint64_t object_len, - Extents&& buffer_extents, ceph::bufferlist&& data, - const ::SnapContext& snapc, uint64_t journal_tid) - : WriteRequestBase(oid, object_no, object_off, snapc, journal_tid), + WriteSameRequest(uint64_t object_no, uint64_t object_off, + uint64_t object_len, Extents&& buffer_extents, + ceph::bufferlist&& data, const ::SnapContext& snapc, + uint64_t journal_tid) + : WriteRequestBase(object_no, object_off, snapc, journal_tid), object_len(object_len), buffer_extents(std::move(buffer_extents)), data(std::move(data)) { } @@ -115,11 +112,11 @@ public: ceph::bufferlist data; uint64_t* mismatch_offset; - CompareAndWriteRequest(const std::string& oid, uint64_t object_no, - uint64_t object_off, ceph::bufferlist&& cmp_data, - ceph::bufferlist&& data, uint64_t* mismatch_offset, + CompareAndWriteRequest(uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& cmp_data, ceph::bufferlist&& data, + uint64_t* mismatch_offset, const ::SnapContext& snapc, uint64_t journal_tid) - : WriteRequestBase(oid, object_no, object_off, snapc, journal_tid), + : WriteRequestBase(object_no, object_off, snapc, journal_tid), cmp_data(std::move(cmp_data)), data(std::move(data)), mismatch_offset(mismatch_offset) { } @@ -155,13 +152,13 @@ public: template static ObjectDispatchSpec* create_read( ImageCtxT* image_ctx, ObjectDispatchLayer object_dispatch_layer, - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, ExtentMap* extent_map, Context* on_finish) { return new ObjectDispatchSpec(image_ctx->io_object_dispatcher, object_dispatch_layer, - ReadRequest{oid, object_no, object_off, + ReadRequest{object_no, object_off, object_len, snap_id, read_data, extent_map}, op_flags, parent_trace, on_finish); @@ -170,13 +167,12 @@ public: template static ObjectDispatchSpec* create_discard( ImageCtxT* image_ctx, ObjectDispatchLayer object_dispatch_layer, - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, - uint64_t journal_tid, const ZTracer::Trace &parent_trace, - Context *on_finish) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, uint64_t journal_tid, + const ZTracer::Trace &parent_trace, Context *on_finish) { return new ObjectDispatchSpec(image_ctx->io_object_dispatcher, object_dispatch_layer, - DiscardRequest{oid, object_no, object_off, + DiscardRequest{object_no, object_off, object_len, discard_flags, snapc, journal_tid}, 0, parent_trace, on_finish); @@ -185,13 +181,12 @@ public: template static ObjectDispatchSpec* create_write( ImageCtxT* image_ctx, ObjectDispatchLayer object_dispatch_layer, - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, - uint64_t journal_tid, const ZTracer::Trace &parent_trace, - Context *on_finish) { + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, uint64_t journal_tid, + const ZTracer::Trace &parent_trace, Context *on_finish) { return new ObjectDispatchSpec(image_ctx->io_object_dispatcher, object_dispatch_layer, - WriteRequest{oid, object_no, object_off, + WriteRequest{object_no, object_off, std::move(data), snapc, journal_tid}, op_flags, parent_trace, on_finish); @@ -200,14 +195,13 @@ public: template static ObjectDispatchSpec* create_write_same( ImageCtxT* image_ctx, ObjectDispatchLayer object_dispatch_layer, - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, - uint64_t journal_tid, const ZTracer::Trace &parent_trace, - Context *on_finish) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + Extents&& buffer_extents, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, uint64_t journal_tid, + const ZTracer::Trace &parent_trace, Context *on_finish) { return new ObjectDispatchSpec(image_ctx->io_object_dispatcher, object_dispatch_layer, - WriteSameRequest{oid, object_no, object_off, + WriteSameRequest{object_no, object_off, object_len, std::move(buffer_extents), std::move(data), snapc, @@ -218,14 +212,13 @@ public: template static ObjectDispatchSpec* create_compare_and_write( ImageCtxT* image_ctx, ObjectDispatchLayer object_dispatch_layer, - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, uint64_t *mismatch_offset, int op_flags, - uint64_t journal_tid, const ZTracer::Trace &parent_trace, - Context *on_finish) { + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, + uint64_t *mismatch_offset, int op_flags, uint64_t journal_tid, + const ZTracer::Trace &parent_trace, Context *on_finish) { return new ObjectDispatchSpec(image_ctx->io_object_dispatcher, object_dispatch_layer, - CompareAndWriteRequest{oid, object_no, + CompareAndWriteRequest{object_no, object_off, std::move(cmp_data), std::move(write_data), diff --git a/src/librbd/io/ObjectDispatcher.cc b/src/librbd/io/ObjectDispatcher.cc index 6285737a81a9a..5e5d482ff59a0 100644 --- a/src/librbd/io/ObjectDispatcher.cc +++ b/src/librbd/io/ObjectDispatcher.cc @@ -107,7 +107,7 @@ struct ObjectDispatcher::SendVisitor : public boost::static_visitor { bool operator()(ObjectDispatchSpec::ReadRequest& read) const { return object_dispatch->read( - read.oid, read.object_no, read.object_off, read.object_len, read.snap_id, + read.object_no, read.object_off, read.object_len, read.snap_id, object_dispatch_spec->op_flags, object_dispatch_spec->parent_trace, read.read_data, read.extent_map, &object_dispatch_spec->object_dispatch_flags, @@ -118,8 +118,8 @@ struct ObjectDispatcher::SendVisitor : public boost::static_visitor { bool operator()(ObjectDispatchSpec::DiscardRequest& discard) const { return object_dispatch->discard( - discard.oid, discard.object_no, discard.object_off, discard.object_len, - discard.snapc, discard.discard_flags, object_dispatch_spec->parent_trace, + discard.object_no, discard.object_off, discard.object_len, discard.snapc, + discard.discard_flags, object_dispatch_spec->parent_trace, &object_dispatch_spec->object_dispatch_flags, &discard.journal_tid, &object_dispatch_spec->dispatch_result, &object_dispatch_spec->dispatcher_ctx.on_finish, @@ -128,9 +128,8 @@ struct ObjectDispatcher::SendVisitor : public boost::static_visitor { bool operator()(ObjectDispatchSpec::WriteRequest& write) const { return object_dispatch->write( - write.oid, write.object_no, write.object_off, std::move(write.data), - write.snapc, object_dispatch_spec->op_flags, - object_dispatch_spec->parent_trace, + write.object_no, write.object_off, std::move(write.data), write.snapc, + object_dispatch_spec->op_flags, object_dispatch_spec->parent_trace, &object_dispatch_spec->object_dispatch_flags, &write.journal_tid, &object_dispatch_spec->dispatch_result, &object_dispatch_spec->dispatcher_ctx.on_finish, @@ -139,10 +138,10 @@ struct ObjectDispatcher::SendVisitor : public boost::static_visitor { bool operator()(ObjectDispatchSpec::WriteSameRequest& write_same) const { return object_dispatch->write_same( - write_same.oid, write_same.object_no, write_same.object_off, - write_same.object_len, std::move(write_same.buffer_extents), - std::move(write_same.data), write_same.snapc, - object_dispatch_spec->op_flags, object_dispatch_spec->parent_trace, + write_same.object_no, write_same.object_off, write_same.object_len, + std::move(write_same.buffer_extents), std::move(write_same.data), + write_same.snapc, object_dispatch_spec->op_flags, + object_dispatch_spec->parent_trace, &object_dispatch_spec->object_dispatch_flags, &write_same.journal_tid, &object_dispatch_spec->dispatch_result, &object_dispatch_spec->dispatcher_ctx.on_finish, @@ -152,11 +151,10 @@ struct ObjectDispatcher::SendVisitor : public boost::static_visitor { bool operator()( ObjectDispatchSpec::CompareAndWriteRequest& compare_and_write) const { return object_dispatch->compare_and_write( - compare_and_write.oid, compare_and_write.object_no, - compare_and_write.object_off, std::move(compare_and_write.cmp_data), - std::move(compare_and_write.data), compare_and_write.snapc, - object_dispatch_spec->op_flags, object_dispatch_spec->parent_trace, - compare_and_write.mismatch_offset, + compare_and_write.object_no, compare_and_write.object_off, + std::move(compare_and_write.cmp_data), std::move(compare_and_write.data), + compare_and_write.snapc, object_dispatch_spec->op_flags, + object_dispatch_spec->parent_trace, compare_and_write.mismatch_offset, &object_dispatch_spec->object_dispatch_flags, &compare_and_write.journal_tid, &object_dispatch_spec->dispatch_result, diff --git a/src/librbd/io/ObjectRequest.cc b/src/librbd/io/ObjectRequest.cc index 43766b71e0a3d..1c3ac150885ac 100644 --- a/src/librbd/io/ObjectRequest.cc +++ b/src/librbd/io/ObjectRequest.cc @@ -26,12 +26,16 @@ #define dout_subsys ceph_subsys_rbd #undef dout_prefix -#define dout_prefix *_dout << "librbd::io::ObjectRequest: " << this \ - << " " << __func__ << ": " +#define dout_prefix *_dout << "librbd::io::ObjectRequest: " << this \ + << " " << __func__ << ": " \ + << data_object_name(this->m_ictx, \ + this->m_object_no) << " " namespace librbd { namespace io { +using librbd::util::data_object_name; + namespace { template @@ -47,58 +51,45 @@ inline bool is_copy_on_read(I *ictx, librados::snap_t snap_id) { template ObjectRequest* -ObjectRequest::create_write(I *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, - const ::SnapContext &snapc, int op_flags, - const ZTracer::Trace &parent_trace, - Context *completion) { - return new ObjectWriteRequest(ictx, oid, object_no, object_off, +ObjectRequest::create_write( + I *ictx, uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion) { + return new ObjectWriteRequest(ictx, object_no, object_off, std::move(data), snapc, op_flags, parent_trace, completion); } template ObjectRequest* -ObjectRequest::create_discard(I *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - uint64_t object_len, - const ::SnapContext &snapc, - int discard_flags, - const ZTracer::Trace &parent_trace, - Context *completion) { - return new ObjectDiscardRequest(ictx, oid, object_no, object_off, +ObjectRequest::create_discard( + I *ictx, uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, + const ZTracer::Trace &parent_trace, Context *completion) { + return new ObjectDiscardRequest(ictx, object_no, object_off, object_len, snapc, discard_flags, parent_trace, completion); } template ObjectRequest* -ObjectRequest::create_write_same(I *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - uint64_t object_len, - ceph::bufferlist&& data, - const ::SnapContext &snapc, int op_flags, - const ZTracer::Trace &parent_trace, - Context *completion) { - return new ObjectWriteSameRequest(ictx, oid, object_no, object_off, +ObjectRequest::create_write_same( + I *ictx, uint64_t object_no, uint64_t object_off, uint64_t object_len, + ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion) { + return new ObjectWriteSameRequest(ictx, object_no, object_off, object_len, std::move(data), snapc, op_flags, parent_trace, completion); } template ObjectRequest* -ObjectRequest::create_compare_and_write(I *ictx, const std::string &oid, - uint64_t object_no, - uint64_t object_off, - ceph::bufferlist&& cmp_data, - ceph::bufferlist&& write_data, - const ::SnapContext &snapc, - uint64_t *mismatch_offset, - int op_flags, - const ZTracer::Trace &parent_trace, - Context *completion) { - return new ObjectCompareAndWriteRequest(ictx, oid, object_no, object_off, +ObjectRequest::create_compare_and_write( + I *ictx, uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, + const ::SnapContext &snapc, uint64_t *mismatch_offset, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion) { + return new ObjectCompareAndWriteRequest(ictx, object_no, object_off, std::move(cmp_data), std::move(write_data), snapc, mismatch_offset, op_flags, @@ -106,17 +97,16 @@ ObjectRequest::create_compare_and_write(I *ictx, const std::string &oid, } template -ObjectRequest::ObjectRequest(I *ictx, const std::string &oid, - uint64_t objectno, uint64_t off, - uint64_t len, librados::snap_t snap_id, - const char *trace_name, - const ZTracer::Trace &trace, - Context *completion) - : m_ictx(ictx), m_oid(oid), m_object_no(objectno), m_object_off(off), +ObjectRequest::ObjectRequest( + I *ictx, uint64_t objectno, uint64_t off, uint64_t len, + librados::snap_t snap_id, const char *trace_name, + const ZTracer::Trace &trace, Context *completion) + : m_ictx(ictx), m_object_no(objectno), m_object_off(off), m_object_len(len), m_snap_id(snap_id), m_completion(completion), m_trace(util::create_trace(*ictx, "", trace)) { if (m_trace.valid()) { - m_trace.copy_name(trace_name + std::string(" ") + oid); + m_trace.copy_name(trace_name + std::string(" ") + + data_object_name(ictx, objectno)); m_trace.event("start"); } } @@ -186,15 +176,11 @@ void ObjectRequest::finish(int r) { /** read **/ template -ObjectReadRequest::ObjectReadRequest(I *ictx, const std::string &oid, - uint64_t objectno, uint64_t offset, - uint64_t len, librados::snap_t snap_id, - int op_flags, - const ZTracer::Trace &parent_trace, - bufferlist* read_data, - ExtentMap* extent_map, - Context *completion) - : ObjectRequest(ictx, oid, objectno, offset, len, snap_id, "read", +ObjectReadRequest::ObjectReadRequest( + I *ictx, uint64_t objectno, uint64_t offset, uint64_t len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, + bufferlist* read_data, ExtentMap* extent_map, Context *completion) + : ObjectRequest(ictx, objectno, offset, len, snap_id, "read", parent_trace, completion), m_op_flags(op_flags), m_read_data(read_data), m_extent_map(extent_map) { } @@ -236,7 +222,8 @@ void ObjectReadRequest::read_object() { ObjectReadRequest, &ObjectReadRequest::handle_read_object>(this); int flags = image_ctx->get_read_flags(this->m_snap_id); int r = image_ctx->data_ctx.aio_operate( - this->m_oid, rados_completion, &op, flags, nullptr, + data_object_name(this->m_ictx, this->m_object_no), rados_completion, &op, + flags, nullptr, (this->m_trace.valid() ? this->m_trace.get_info() : nullptr)); ceph_assert(r == 0); @@ -343,8 +330,7 @@ void ObjectReadRequest::copyup() { if (it == image_ctx->copyup_list.end()) { // create and kick off a CopyupRequest auto new_req = CopyupRequest::create( - image_ctx, this->m_oid, this->m_object_no, std::move(parent_extents), - this->m_trace); + image_ctx, this->m_object_no, std::move(parent_extents), this->m_trace); image_ctx->copyup_list[this->m_object_no] = new_req; image_ctx->copyup_list_lock.Unlock(); @@ -363,11 +349,11 @@ void ObjectReadRequest::copyup() { template AbstractObjectWriteRequest::AbstractObjectWriteRequest( - I *ictx, const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t len, const ::SnapContext &snapc, const char *trace_name, + I *ictx, uint64_t object_no, uint64_t object_off, uint64_t len, + const ::SnapContext &snapc, const char *trace_name, const ZTracer::Trace &parent_trace, Context *completion) - : ObjectRequest(ictx, oid, object_no, object_off, len, CEPH_NOSNAP, - trace_name, parent_trace, completion), + : ObjectRequest(ictx, object_no, object_off, len, CEPH_NOSNAP, trace_name, + parent_trace, completion), m_snap_seq(snapc.seq.val) { m_snaps.insert(m_snaps.end(), snapc.snaps.begin(), snapc.snaps.end()); @@ -412,7 +398,7 @@ void AbstractObjectWriteRequest::add_write_hint( template void AbstractObjectWriteRequest::send() { I *image_ctx = this->m_ictx; - ldout(image_ctx->cct, 20) << this->get_op_type() << " " << this->m_oid << " " + ldout(image_ctx->cct, 20) << this->get_op_type() << " " << this->m_object_off << "~" << this->m_object_len << dendl; { @@ -456,8 +442,8 @@ void AbstractObjectWriteRequest::pre_write_object_map_update() { } uint8_t new_state = this->get_pre_write_object_map_state(); - ldout(image_ctx->cct, 20) << this->m_oid << " " << this->m_object_off - << "~" << this->m_object_len << dendl; + ldout(image_ctx->cct, 20) << this->m_object_off << "~" << this->m_object_len + << dendl; if (image_ctx->object_map->template aio_update< AbstractObjectWriteRequest, @@ -510,7 +496,8 @@ void AbstractObjectWriteRequest::write_object() { AbstractObjectWriteRequest, &AbstractObjectWriteRequest::handle_write_object>(this); int r = image_ctx->data_ctx.aio_operate( - this->m_oid, rados_completion, &write, m_snap_seq, m_snaps, + data_object_name(this->m_ictx, this->m_object_no), rados_completion, + &write, m_snap_seq, m_snaps, (this->m_trace.valid() ? this->m_trace.get_info() : nullptr)); ceph_assert(r == 0); rados_completion->release(); @@ -566,8 +553,8 @@ void AbstractObjectWriteRequest::copyup() { auto it = image_ctx->copyup_list.find(this->m_object_no); if (it == image_ctx->copyup_list.end()) { auto new_req = CopyupRequest::create( - image_ctx, this->m_oid, this->m_object_no, - std::move(this->m_parent_extents), this->m_trace); + image_ctx, this->m_object_no, std::move(this->m_parent_extents), + this->m_trace); this->m_parent_extents.clear(); // make sure to wait on this CopyupRequest diff --git a/src/librbd/io/ObjectRequest.h b/src/librbd/io/ObjectRequest.h index 9452ec43acd8c..b9bd134451e2c 100644 --- a/src/librbd/io/ObjectRequest.h +++ b/src/librbd/io/ObjectRequest.h @@ -34,28 +34,24 @@ template class ObjectRequest { public: static ObjectRequest* create_write( - ImageCtxT *ictx, const std::string &oid, uint64_t object_no, - uint64_t object_off, ceph::bufferlist&& data, const ::SnapContext &snapc, - int op_flags, const ZTracer::Trace &parent_trace, Context *completion); + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion); static ObjectRequest* create_discard( - ImageCtxT *ictx, const std::string &oid, uint64_t object_no, - uint64_t object_off, uint64_t object_len, const ::SnapContext &snapc, - int discard_flags, const ZTracer::Trace &parent_trace, - Context *completion); - static ObjectRequest* create_write_same( - ImageCtxT *ictx, const std::string &oid, uint64_t object_no, - uint64_t object_off, uint64_t object_len, ceph::bufferlist&& data, - const ::SnapContext &snapc, int op_flags, + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + uint64_t object_len, const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, Context *completion); + static ObjectRequest* create_write_same( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + uint64_t object_len, ceph::bufferlist&& data, const ::SnapContext &snapc, + int op_flags, const ZTracer::Trace &parent_trace, Context *completion); static ObjectRequest* create_compare_and_write( - ImageCtxT *ictx, const std::string &oid, uint64_t object_no, - uint64_t object_off, ceph::bufferlist&& cmp_data, - ceph::bufferlist&& write_data, const ::SnapContext &snapc, - uint64_t *mismatch_offset, int op_flags, + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, + const ::SnapContext &snapc, uint64_t *mismatch_offset, int op_flags, const ZTracer::Trace &parent_trace, Context *completion); - ObjectRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t objectno, uint64_t off, uint64_t len, + ObjectRequest(ImageCtxT *ictx, uint64_t objectno, uint64_t off, uint64_t len, librados::snap_t snap_id, const char *trace_name, const ZTracer::Trace &parent_trace, Context *completion); virtual ~ObjectRequest() { @@ -77,7 +73,6 @@ protected: bool compute_parent_extents(Extents *parent_extents, bool read_request); ImageCtxT *m_ictx; - std::string m_oid; uint64_t m_object_no, m_object_off, m_object_len; librados::snap_t m_snap_id; Context *m_completion; @@ -95,24 +90,21 @@ class ObjectReadRequest : public ObjectRequest { public: typedef std::map ExtentMap; - static ObjectReadRequest* create(ImageCtxT *ictx, const std::string &oid, - uint64_t objectno, uint64_t offset, - uint64_t len, librados::snap_t snap_id, - int op_flags, - const ZTracer::Trace &parent_trace, - ceph::bufferlist* read_data, - ExtentMap* extent_map, Context *completion) { - return new ObjectReadRequest(ictx, oid, objectno, offset, len, + static ObjectReadRequest* create( + ImageCtxT *ictx, uint64_t objectno, uint64_t offset, uint64_t len, + librados::snap_t snap_id, int op_flags, + const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, + ExtentMap* extent_map, Context *completion) { + return new ObjectReadRequest(ictx, objectno, offset, len, snap_id, op_flags, parent_trace, read_data, extent_map, completion); } - ObjectReadRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t objectno, uint64_t offset, uint64_t len, - librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, - ceph::bufferlist* read_data, ExtentMap* extent_map, - Context *completion); + ObjectReadRequest( + ImageCtxT *ictx, uint64_t objectno, uint64_t offset, uint64_t len, + librados::snap_t snap_id, int op_flags, + const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, + ExtentMap* extent_map, Context *completion); void send() override; @@ -159,12 +151,10 @@ private: template class AbstractObjectWriteRequest : public ObjectRequest { public: - AbstractObjectWriteRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - uint64_t len, const ::SnapContext &snapc, - const char *trace_name, - const ZTracer::Trace &parent_trace, - Context *completion); + AbstractObjectWriteRequest( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, uint64_t len, + const ::SnapContext &snapc, const char *trace_name, + const ZTracer::Trace &parent_trace, Context *completion); virtual bool is_empty_write_op() const { return false; @@ -264,12 +254,11 @@ private: template class ObjectWriteRequest : public AbstractObjectWriteRequest { public: - ObjectWriteRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, - int op_flags, const ZTracer::Trace &parent_trace, - Context *completion) - : AbstractObjectWriteRequest(ictx, oid, object_no, object_off, + ObjectWriteRequest( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion) + : AbstractObjectWriteRequest(ictx, object_no, object_off, data.length(), snapc, "write", parent_trace, completion), m_write_data(std::move(data)), m_op_flags(op_flags) { @@ -294,12 +283,11 @@ private: template class ObjectDiscardRequest : public AbstractObjectWriteRequest { public: - ObjectDiscardRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, - int discard_flags, const ZTracer::Trace &parent_trace, - Context *completion) - : AbstractObjectWriteRequest(ictx, oid, object_no, object_off, + ObjectDiscardRequest( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + const ZTracer::Trace &parent_trace, Context *completion) + : AbstractObjectWriteRequest(ictx, object_no, object_off, object_len, snapc, "discard", parent_trace, completion), m_discard_flags(discard_flags) { @@ -397,13 +385,11 @@ private: template class ObjectWriteSameRequest : public AbstractObjectWriteRequest { public: - ObjectWriteSameRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - uint64_t object_len, ceph::bufferlist&& data, - const ::SnapContext &snapc, int op_flags, - const ZTracer::Trace &parent_trace, - Context *completion) - : AbstractObjectWriteRequest(ictx, oid, object_no, object_off, + ObjectWriteSameRequest( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + uint64_t object_len, ceph::bufferlist&& data, const ::SnapContext &snapc, + int op_flags, const ZTracer::Trace &parent_trace, Context *completion) + : AbstractObjectWriteRequest(ictx, object_no, object_off, object_len, snapc, "writesame", parent_trace, completion), m_write_data(std::move(data)), m_op_flags(op_flags) { @@ -424,15 +410,12 @@ private: template class ObjectCompareAndWriteRequest : public AbstractObjectWriteRequest { public: - ObjectCompareAndWriteRequest(ImageCtxT *ictx, const std::string &oid, - uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_bl, - ceph::bufferlist&& write_bl, - const ::SnapContext &snapc, - uint64_t *mismatch_offset, int op_flags, - const ZTracer::Trace &parent_trace, - Context *completion) - : AbstractObjectWriteRequest(ictx, oid, object_no, object_off, + ObjectCompareAndWriteRequest( + ImageCtxT *ictx, uint64_t object_no, uint64_t object_off, + ceph::bufferlist&& cmp_bl, ceph::bufferlist&& write_bl, + const ::SnapContext &snapc, uint64_t *mismatch_offset, int op_flags, + const ZTracer::Trace &parent_trace, Context *completion) + : AbstractObjectWriteRequest(ictx, object_no, object_off, cmp_bl.length(), snapc, "compare_and_write", parent_trace, completion), diff --git a/src/librbd/io/SimpleSchedulerObjectDispatch.cc b/src/librbd/io/SimpleSchedulerObjectDispatch.cc index 49dd68483a383..b3486e2430aad 100644 --- a/src/librbd/io/SimpleSchedulerObjectDispatch.cc +++ b/src/librbd/io/SimpleSchedulerObjectDispatch.cc @@ -25,6 +25,7 @@ namespace librbd { namespace io { using namespace boost::accumulators; +using librbd::util::data_object_name; static const int LATENCY_STATS_WINDOW_SIZE = 10; @@ -159,8 +160,8 @@ void SimpleSchedulerObjectDispatch::ObjectRequests::dispatch_delayed_requests auto req = io::ObjectDispatchSpec::create_write( image_ctx, io::OBJECT_DISPATCH_LAYER_SCHEDULER, - image_ctx->get_object_name(m_object_no), m_object_no, offset, - std::move(merged_requests.data), m_snapc, m_op_flags, 0, {}, ctx); + m_object_no, offset, std::move(merged_requests.data), m_snapc, + m_op_flags, 0, {}, ctx); req->object_dispatch_flags = m_object_dispatch_flags; req->send(); @@ -210,15 +211,14 @@ void SimpleSchedulerObjectDispatch::shut_down(Context* on_finish) { template bool SimpleSchedulerObjectDispatch::read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, - const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, - io::ExtentMap* extent_map, int* object_dispatch_flags, - io::DispatchResult* dispatch_result, Context** on_finish, - Context* on_dispatched) { + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, + ceph::bufferlist* read_data, io::ExtentMap* extent_map, + int* object_dispatch_flags, io::DispatchResult* dispatch_result, + Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; Mutex::Locker locker(m_lock); if (intersects(object_no, object_off, object_len)) { @@ -230,14 +230,14 @@ bool SimpleSchedulerObjectDispatch::read( template bool SimpleSchedulerObjectDispatch::discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; Mutex::Locker locker(m_lock); dispatch_delayed_requests(object_no); @@ -248,14 +248,14 @@ bool SimpleSchedulerObjectDispatch::discard( template bool SimpleSchedulerObjectDispatch::write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << data.length() << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << data.length() << dendl; Mutex::Locker locker(m_lock); if (try_delay_write(object_no, object_off, std::move(data), snapc, op_flags, @@ -272,15 +272,15 @@ bool SimpleSchedulerObjectDispatch::write( template bool SimpleSchedulerObjectDispatch::write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; Mutex::Locker locker(m_lock); dispatch_delayed_requests(object_no); @@ -291,16 +291,15 @@ bool SimpleSchedulerObjectDispatch::write_same( template bool SimpleSchedulerObjectDispatch::compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; - ldout(cct, 20) << "object_no=" << object_no << " " << object_off << "~" - << cmp_data.length() << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << cmp_data.length() << dendl; Mutex::Locker locker(m_lock); dispatch_delayed_requests(object_no); diff --git a/src/librbd/io/SimpleSchedulerObjectDispatch.h b/src/librbd/io/SimpleSchedulerObjectDispatch.h index 7c0f0c28a7470..67fd09ab92d94 100644 --- a/src/librbd/io/SimpleSchedulerObjectDispatch.h +++ b/src/librbd/io/SimpleSchedulerObjectDispatch.h @@ -49,39 +49,38 @@ public: void shut_down(Context* on_finish) override; bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, io::ExtentMap* extent_map, int* object_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/journal/ObjectDispatch.cc b/src/librbd/journal/ObjectDispatch.cc index ebe09fe7e195f..5ae95a8acf540 100644 --- a/src/librbd/journal/ObjectDispatch.cc +++ b/src/librbd/journal/ObjectDispatch.cc @@ -7,6 +7,7 @@ #include "osdc/Striper.h" #include "librbd/ImageCtx.h" #include "librbd/Journal.h" +#include "librbd/Utils.h" #include "librbd/io/ObjectDispatchSpec.h" #include "librbd/io/ObjectDispatcher.h" @@ -18,6 +19,8 @@ namespace librbd { namespace journal { +using librbd::util::data_object_name; + namespace { template @@ -75,8 +78,8 @@ void ObjectDispatch::shut_down(Context* on_finish) { template bool ObjectDispatch::discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -86,7 +89,8 @@ bool ObjectDispatch::discard( } auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; *on_finish = new C_CommitIOEvent(m_image_ctx, m_journal, object_no, object_off, object_len, *journal_tid, @@ -99,8 +103,8 @@ bool ObjectDispatch::discard( template bool ObjectDispatch::write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -110,7 +114,8 @@ bool ObjectDispatch::write( } auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << data.length() << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << data.length() << dendl; *on_finish = new C_CommitIOEvent(m_image_ctx, m_journal, object_no, object_off, data.length(), *journal_tid, @@ -123,8 +128,8 @@ bool ObjectDispatch::write( template bool ObjectDispatch::write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, @@ -135,7 +140,8 @@ bool ObjectDispatch::write_same( } auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << object_len << dendl; + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << object_len << dendl; *on_finish = new C_CommitIOEvent(m_image_ctx, m_journal, object_no, object_off, object_len, *journal_tid, @@ -148,9 +154,8 @@ bool ObjectDispatch::write_same( template bool ObjectDispatch::compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, @@ -161,7 +166,8 @@ bool ObjectDispatch::compare_and_write( } auto cct = m_image_ctx->cct; - ldout(cct, 20) << oid << " " << object_off << "~" << write_data.length() + ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " + << object_off << "~" << write_data.length() << dendl; *on_finish = new C_CommitIOEvent(m_image_ctx, m_journal, object_no, diff --git a/src/librbd/journal/ObjectDispatch.h b/src/librbd/journal/ObjectDispatch.h index d58c3f9e53d80..fe3e22f5ff241 100644 --- a/src/librbd/journal/ObjectDispatch.h +++ b/src/librbd/journal/ObjectDispatch.h @@ -38,8 +38,8 @@ public: void shut_down(Context* on_finish) override; bool read( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace &parent_trace, ceph::bufferlist* read_data, io::ExtentMap* extent_map, int* object_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, @@ -48,31 +48,30 @@ public: } bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, io::Extents&& buffer_extents, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + io::Extents&& buffer_extents, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* object_dispatch_flags, uint64_t* journal_tid, io::DispatchResult* dispatch_result, Context** on_finish, diff --git a/src/librbd/operation/FlattenRequest.cc b/src/librbd/operation/FlattenRequest.cc index 268d244d99518..59dc8b558cf08 100644 --- a/src/librbd/operation/FlattenRequest.cc +++ b/src/librbd/operation/FlattenRequest.cc @@ -55,8 +55,7 @@ public: } bufferlist bl; - string oid = image_ctx.get_object_name(m_object_no); - auto req = new io::ObjectWriteRequest(&image_ctx, oid, m_object_no, 0, + auto req = new io::ObjectWriteRequest(&image_ctx, m_object_no, 0, std::move(bl), m_snapc, 0, {}, this); if (!req->has_parent()) { diff --git a/src/librbd/operation/MigrateRequest.cc b/src/librbd/operation/MigrateRequest.cc index 9be157cdf5a6a..9f698f7e1aa2b 100644 --- a/src/librbd/operation/MigrateRequest.cc +++ b/src/librbd/operation/MigrateRequest.cc @@ -118,8 +118,7 @@ private: if (is_within_overlap_bounds()) { bufferlist bl; - string oid = image_ctx.get_object_name(m_object_no); - auto req = new io::ObjectWriteRequest(&image_ctx, oid, m_object_no, 0, + auto req = new io::ObjectWriteRequest(&image_ctx, m_object_no, 0, std::move(bl), m_snapc, 0, {}, ctx); diff --git a/src/librbd/operation/TrimRequest.cc b/src/librbd/operation/TrimRequest.cc index 1b260953ea41a..ab7f31192092c 100644 --- a/src/librbd/operation/TrimRequest.cc +++ b/src/librbd/operation/TrimRequest.cc @@ -47,7 +47,7 @@ public: ldout(image_ctx.cct, 10) << "removing (with copyup) " << oid << dendl; auto object_dispatch_spec = io::ObjectDispatchSpec::create_discard( - &image_ctx, io::OBJECT_DISPATCH_LAYER_NONE, oid, m_object_no, 0, + &image_ctx, io::OBJECT_DISPATCH_LAYER_NONE, m_object_no, 0, image_ctx.layout.object_size, m_snapc, io::OBJECT_DISCARD_FLAG_DISABLE_OBJECT_MAP_UPDATE, 0, {}, this); object_dispatch_spec->send(); @@ -346,8 +346,8 @@ void TrimRequest::send_clean_boundary() { } auto object_dispatch_spec = io::ObjectDispatchSpec::create_discard( - &image_ctx, io::OBJECT_DISPATCH_LAYER_NONE, p->oid.name, p->objectno, - p->offset, p->length, snapc, 0, 0, {}, req_comp); + &image_ctx, io::OBJECT_DISPATCH_LAYER_NONE, p->objectno, p->offset, + p->length, snapc, 0, 0, {}, req_comp); object_dispatch_spec->send(); } completion->finish_adding_requests(); diff --git a/src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc b/src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc index 611109fcc47a4..ee7cfc5fd3911 100644 --- a/src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc +++ b/src/test/librbd/cache/test_mock_WriteAroundObjectDispatch.cc @@ -72,7 +72,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteThrough) { MockContext finish_ctx; MockContext dispatch_ctx; Context* finish_ctx_ptr = &finish_ctx; - ASSERT_FALSE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_FALSE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr, &dispatch_ctx)); ASSERT_EQ(finish_ctx_ptr, &finish_ctx); @@ -95,7 +95,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteThroughUntilFlushed) { MockContext finish_ctx; MockContext dispatch_ctx; Context* finish_ctx_ptr = &finish_ctx; - ASSERT_FALSE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_FALSE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr, &dispatch_ctx)); ASSERT_EQ(finish_ctx_ptr, &finish_ctx); @@ -107,7 +107,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, WriteThroughUntilFlushed) { expect_context_complete(dispatch_ctx, 0); expect_context_complete(finish_ctx, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr, &dispatch_ctx)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -138,7 +138,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, DispatchIO) { expect_context_complete(dispatch_ctx, 0); expect_context_complete(finish_ctx, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr, &dispatch_ctx)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -170,7 +170,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -183,7 +183,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedIO) { expect_context_complete(dispatch_ctx2, 0); expect_context_complete(finish_ctx2, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 4096, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 4096, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr2, &dispatch_ctx2)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -193,7 +193,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedIO) { MockContext dispatch_ctx3; Context* finish_ctx_ptr3 = &finish_ctx3; - ASSERT_TRUE(object_dispatch.write("oid", 0, 1024, std::move(data), {}, 0, + ASSERT_TRUE(object_dispatch.write(0, 1024, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr3, &dispatch_ctx3)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -235,7 +235,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, QueuedIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -245,7 +245,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, QueuedIO) { MockContext dispatch_ctx2; Context* finish_ctx_ptr2 = &finish_ctx2; - ASSERT_TRUE(object_dispatch.write("oid", 0, 8192, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 8192, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr2, &dispatch_ctx2)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -283,7 +283,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedAndQueuedIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -296,7 +296,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedAndQueuedIO) { expect_context_complete(dispatch_ctx2, 0); expect_context_complete(finish_ctx2, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 4096, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 4096, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr2, &dispatch_ctx2)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -306,7 +306,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, BlockedAndQueuedIO) { MockContext dispatch_ctx3; Context* finish_ctx_ptr3 = &finish_ctx3; - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr3, &dispatch_ctx3)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -368,7 +368,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FlushQueuedOnInFlightIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -413,7 +413,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FlushQueuedOnQueuedIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -424,7 +424,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FlushQueuedOnQueuedIO) { MockContext dispatch_ctx2; Context* finish_ctx_ptr2 = &finish_ctx2; - ASSERT_TRUE(object_dispatch.write("oid", 0, 8192, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 8192, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr2, &dispatch_ctx2)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -477,7 +477,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FlushError) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -517,7 +517,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIO) { MockContext dispatch_ctx; Context* finish_ctx_ptr = &finish_ctx; - ASSERT_FALSE(object_dispatch.compare_and_write("oid", 0, 0, std::move(data), + ASSERT_FALSE(object_dispatch.compare_and_write(0, 0, std::move(data), std::move(data), {}, 0, {}, nullptr, nullptr, nullptr, &dispatch_result, @@ -547,7 +547,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOInFlightIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -558,7 +558,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOInFlightIO) { MockContext finish_ctx2; MockContext dispatch_ctx2; Context* finish_ctx_ptr2 = &finish_ctx2; - ASSERT_TRUE(object_dispatch.compare_and_write("oid", 0, 0, std::move(data), + ASSERT_TRUE(object_dispatch.compare_and_write(0, 0, std::move(data), std::move(data), {}, 0, {}, nullptr, nullptr, nullptr, &dispatch_result, @@ -593,7 +593,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOBlockedIO) { expect_context_complete(dispatch_ctx1, 0); expect_context_complete(finish_ctx1, 0); - ASSERT_TRUE(object_dispatch.write("oid", 0, 0, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 0, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr1, &dispatch_ctx1)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -604,7 +604,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOBlockedIO) { MockContext finish_ctx2; MockContext dispatch_ctx2; Context* finish_ctx_ptr2 = &finish_ctx2; - ASSERT_TRUE(object_dispatch.write("oid", 0, 4096, std::move(data), {}, 0, {}, + ASSERT_TRUE(object_dispatch.write(0, 4096, std::move(data), {}, 0, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr2, &dispatch_ctx2)); ASSERT_EQ(io::DISPATCH_RESULT_CONTINUE, dispatch_result); @@ -613,7 +613,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, UnoptimizedIOBlockedIO) { MockContext finish_ctx3; MockContext dispatch_ctx3; Context* finish_ctx_ptr3 = &finish_ctx3; - ASSERT_TRUE(object_dispatch.compare_and_write("oid", 0, 0, std::move(data), + ASSERT_TRUE(object_dispatch.compare_and_write(0, 0, std::move(data), std::move(data), {}, 0, {}, nullptr, nullptr, nullptr, &dispatch_result, @@ -648,7 +648,7 @@ TEST_F(TestMockCacheWriteAroundObjectDispatch, FUA) { MockContext finish_ctx; MockContext dispatch_ctx; Context* finish_ctx_ptr = &finish_ctx; - ASSERT_FALSE(object_dispatch.write("oid", 0, 0, std::move(data), {}, + ASSERT_FALSE(object_dispatch.write(0, 0, std::move(data), {}, LIBRADOS_OP_FLAG_FADVISE_FUA, {}, nullptr, nullptr, &dispatch_result, &finish_ctx_ptr, &dispatch_ctx)); diff --git a/src/test/librbd/io/test_mock_CopyupRequest.cc b/src/test/librbd/io/test_mock_CopyupRequest.cc index 10c8ee0cf4bd6..d5d1ca36b86e7 100644 --- a/src/test/librbd/io/test_mock_CopyupRequest.cc +++ b/src/test/librbd/io/test_mock_CopyupRequest.cc @@ -373,11 +373,11 @@ TEST_F(TestMockIoCopyupRequest, Standard) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {{0, 4096}}, data, - 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {{0, 4096}}, data, 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -431,10 +431,11 @@ TEST_F(TestMockIoCopyupRequest, StandardWithSnaps) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, 0, "oid", {{0, 4096}}, data, 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, 0, ictx->get_object_name(0), {{0, 4096}}, + data, 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -472,10 +473,10 @@ TEST_F(TestMockIoCopyupRequest, CopyOnRead) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true, 0); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {{0, 4096}}, data, - 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {{0, 4096}}, data, 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->send(); @@ -519,9 +520,10 @@ TEST_F(TestMockIoCopyupRequest, CopyOnReadWithSnaps) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS_CLEAN, true, 0); - expect_sparse_copyup(mock_image_ctx, 0, "oid", {{0, 4096}}, data, 0); + expect_sparse_copyup(mock_image_ctx, 0, ictx->get_object_name(0), {{0, 4096}}, + data, 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->send(); @@ -562,10 +564,11 @@ TEST_F(TestMockIoCopyupRequest, DeepCopy) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -603,9 +606,10 @@ TEST_F(TestMockIoCopyupRequest, DeepCopyOnRead) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true, 0); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->send(); @@ -668,10 +672,11 @@ TEST_F(TestMockIoCopyupRequest, DeepCopyWithPostSnaps) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -739,10 +744,11 @@ TEST_F(TestMockIoCopyupRequest, DeepCopyWithPreAndPostSnaps) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -779,10 +785,11 @@ TEST_F(TestMockIoCopyupRequest, ZeroedCopyup) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -820,9 +827,10 @@ TEST_F(TestMockIoCopyupRequest, ZeroedCopyOnRead) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true, 0); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {}, "", 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {}, "", 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->send(); @@ -856,7 +864,7 @@ TEST_F(TestMockIoCopyupRequest, NoOpCopyup) { MockAbstractObjectWriteRequest mock_write_request; expect_is_empty_write_op(mock_write_request, true); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -897,15 +905,15 @@ TEST_F(TestMockIoCopyupRequest, RestartWrite) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true, 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); expect_add_copyup_ops(mock_write_request1); - expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", {{0, 4096}}, data, - 0); + expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), + {{0, 4096}}, data, 0); MockAbstractObjectWriteRequest mock_write_request2; EXPECT_CALL(get_mock_io_ctx(mock_image_ctx.data_ctx), - write("oid", _, 0, 0, _)) + write(ictx->get_object_name(0), _, 0, 0, _)) .WillOnce(WithoutArgs(Invoke([req, &mock_write_request2]() { req->append_request(&mock_write_request2); return 0; @@ -946,7 +954,7 @@ TEST_F(TestMockIoCopyupRequest, ReadFromParentError) { MockAbstractObjectWriteRequest mock_write_request; expect_is_empty_write_op(mock_write_request, false); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -983,7 +991,7 @@ TEST_F(TestMockIoCopyupRequest, DeepCopyError) { expect_is_empty_write_op(mock_write_request, false); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -1024,7 +1032,7 @@ TEST_F(TestMockIoCopyupRequest, UpdateObjectMapError) { expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true, -EINVAL); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -1074,10 +1082,11 @@ TEST_F(TestMockIoCopyupRequest, CopyupError) { 0); expect_add_copyup_ops(mock_write_request); - expect_sparse_copyup(mock_image_ctx, 0, "oid", {{0, 4096}}, data, -EPERM); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_sparse_copyup(mock_image_ctx, 0, ictx->get_object_name(0), {{0, 4096}}, + data, -EPERM); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); @@ -1121,11 +1130,10 @@ TEST_F(TestMockIoCopyupRequest, SparseCopyupNotSupported) { 0); expect_add_copyup_ops(mock_write_request); - expect_copyup(mock_image_ctx, CEPH_NOSNAP, "oid", data, 0); - expect_write(mock_image_ctx, CEPH_NOSNAP, "oid", 0); + expect_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), data, 0); + expect_write(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0), 0); - auto req = new MockCopyupRequest(&mock_image_ctx, "oid", 0, - {{0, 4096}}, {}); + auto req = new MockCopyupRequest(&mock_image_ctx, 0, {{0, 4096}}, {}); mock_image_ctx.copyup_list[0] = req; req->append_request(&mock_write_request); req->send(); diff --git a/src/test/librbd/io/test_mock_ObjectRequest.cc b/src/test/librbd/io/test_mock_ObjectRequest.cc index 3459ac49c418b..b963d737704da 100644 --- a/src/test/librbd/io/test_mock_ObjectRequest.cc +++ b/src/test/librbd/io/test_mock_ObjectRequest.cc @@ -43,8 +43,7 @@ template <> struct CopyupRequest : public CopyupRequest { static CopyupRequest* s_instance; static CopyupRequest* create(librbd::MockTestImageCtx *ictx, - const std::string &oid, uint64_t objectno, - Extents &&image_extents, + uint64_t objectno, Extents &&image_extents, const ZTracer::Trace &parent_trace) { return s_instance; } @@ -331,8 +330,7 @@ TEST_F(TestMockIoObjectRequest, Read) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, - &bl, &extent_map, &ctx); + &mock_image_ctx, 0, 0, 4096, CEPH_NOSNAP, 0, {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -360,9 +358,8 @@ TEST_F(TestMockIoObjectRequest, SparseReadThreshold) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - ictx->sparse_read_threshold_bytes, CEPH_NOSNAP, 0, {}, &bl, &extent_map, - &ctx); + &mock_image_ctx, 0, 0, ictx->sparse_read_threshold_bytes, CEPH_NOSNAP, 0, + {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -388,8 +385,7 @@ TEST_F(TestMockIoObjectRequest, ReadError) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, - &bl, &extent_map, &ctx); + &mock_image_ctx, 0, 0, 4096, CEPH_NOSNAP, 0, {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -436,8 +432,7 @@ TEST_F(TestMockIoObjectRequest, ParentRead) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, - &bl, &extent_map, &ctx); + &mock_image_ctx, 0, 0, 4096, CEPH_NOSNAP, 0, {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -484,8 +479,7 @@ TEST_F(TestMockIoObjectRequest, ParentReadError) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, - &bl, &extent_map, &ctx); + &mock_image_ctx, 0, 0, 4096, CEPH_NOSNAP, 0, {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -537,8 +531,7 @@ TEST_F(TestMockIoObjectRequest, CopyOnRead) { ExtentMap extent_map; C_SaferCond ctx; auto req = MockObjectReadRequest::create( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, - &bl, &extent_map, &ctx); + &mock_image_ctx, 0, 0, 4096, CEPH_NOSNAP, 0, {}, &bl, &extent_map, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -572,8 +565,7 @@ TEST_F(TestMockIoObjectRequest, Write) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -607,8 +599,7 @@ TEST_F(TestMockIoObjectRequest, WriteFull) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -641,8 +632,7 @@ TEST_F(TestMockIoObjectRequest, WriteObjectMap) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -663,8 +653,7 @@ TEST_F(TestMockIoObjectRequest, WriteError) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -717,8 +706,7 @@ TEST_F(TestMockIoObjectRequest, Copyup) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -773,8 +761,7 @@ TEST_F(TestMockIoObjectRequest, CopyupRestart) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -821,8 +808,7 @@ TEST_F(TestMockIoObjectRequest, CopyupOptimization) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -862,8 +848,7 @@ TEST_F(TestMockIoObjectRequest, CopyupError) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(-EPERM, ctx.wait()); } @@ -896,8 +881,8 @@ TEST_F(TestMockIoObjectRequest, DiscardRemove) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - mock_image_ctx.get_object_size(), mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, mock_image_ctx.get_object_size(), + mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -946,9 +931,8 @@ TEST_F(TestMockIoObjectRequest, DiscardRemoveTruncate) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - mock_image_ctx.get_object_size(), mock_image_ctx.snapc, - OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE, {}, &ctx); + &mock_image_ctx, 0, 0, mock_image_ctx.get_object_size(), + mock_image_ctx.snapc, OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1003,9 +987,8 @@ TEST_F(TestMockIoObjectRequest, DiscardTruncateAssertExists) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - mock_image_ctx.get_object_size(), mock_image_ctx.snapc, - OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE, {}, &ctx); + &mock_image_ctx, 0, 0, mock_image_ctx.get_object_size(), + mock_image_ctx.snapc, OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1039,8 +1022,8 @@ TEST_F(TestMockIoObjectRequest, DiscardTruncate) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 1, - mock_image_ctx.get_object_size() - 1, mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 1, mock_image_ctx.get_object_size() - 1, + mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1071,8 +1054,7 @@ TEST_F(TestMockIoObjectRequest, DiscardZero) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 1, 1, mock_image_ctx.snapc, - 0, {}, &ctx); + &mock_image_ctx, 0, 1, 1, mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1100,8 +1082,8 @@ TEST_F(TestMockIoObjectRequest, DiscardDisableObjectMapUpdate) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - mock_image_ctx.get_object_size(), mock_image_ctx.snapc, + &mock_image_ctx, 0, 0, mock_image_ctx.get_object_size(), + mock_image_ctx.snapc, OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE | OBJECT_DISCARD_FLAG_DISABLE_OBJECT_MAP_UPDATE, {}, &ctx); req->send(); @@ -1131,8 +1113,8 @@ TEST_F(TestMockIoObjectRequest, DiscardNoOp) { C_SaferCond ctx; auto req = MockObjectDiscardRequest::create_discard( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, - mock_image_ctx.get_object_size(), mock_image_ctx.snapc, + &mock_image_ctx, 0, 0, mock_image_ctx.get_object_size(), + mock_image_ctx.snapc, OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE | OBJECT_DISCARD_FLAG_DISABLE_OBJECT_MAP_UPDATE, {}, &ctx); @@ -1169,8 +1151,7 @@ TEST_F(TestMockIoObjectRequest, WriteSame) { C_SaferCond ctx; auto req = MockObjectWriteSameRequest::create_write_same( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, 4096, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, 4096, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1209,8 +1190,8 @@ TEST_F(TestMockIoObjectRequest, CompareAndWrite) { C_SaferCond ctx; uint64_t mismatch_offset; auto req = MockObjectWriteSameRequest::create_compare_and_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(cmp_bl), - std::move(bl), mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(cmp_bl), std::move(bl), + mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1249,8 +1230,8 @@ TEST_F(TestMockIoObjectRequest, CompareAndWriteFull) { C_SaferCond ctx; uint64_t mismatch_offset; auto req = MockObjectWriteSameRequest::create_compare_and_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(cmp_bl), - std::move(bl), mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(cmp_bl), std::move(bl), + mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1311,8 +1292,8 @@ TEST_F(TestMockIoObjectRequest, CompareAndWriteCopyup) { C_SaferCond ctx; uint64_t mismatch_offset; auto req = MockObjectWriteSameRequest::create_compare_and_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(cmp_bl), - std::move(bl), mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(cmp_bl), std::move(bl), + mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); req->send(); ASSERT_EQ(0, ctx.wait()); } @@ -1350,8 +1331,8 @@ TEST_F(TestMockIoObjectRequest, CompareAndWriteMismatch) { C_SaferCond ctx; uint64_t mismatch_offset; auto req = MockObjectWriteSameRequest::create_compare_and_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(cmp_bl), - std::move(bl), mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(cmp_bl), std::move(bl), + mock_image_ctx.snapc, &mismatch_offset, 0, {}, &ctx); req->send(); ASSERT_EQ(-EILSEQ, ctx.wait()); ASSERT_EQ(1ULL, mismatch_offset); @@ -1385,8 +1366,7 @@ TEST_F(TestMockIoObjectRequest, ObjectMapError) { C_SaferCond ctx; auto req = MockObjectWriteRequest::create_write( - &mock_image_ctx, ictx->get_object_name(0), 0, 0, std::move(bl), - mock_image_ctx.snapc, 0, {}, &ctx); + &mock_image_ctx, 0, 0, std::move(bl), mock_image_ctx.snapc, 0, {}, &ctx); req->send(); ASSERT_EQ(-EBLACKLISTED, ctx.wait()); } diff --git a/src/test/librbd/io/test_mock_SimpleSchedulerObjectDispatch.cc b/src/test/librbd/io/test_mock_SimpleSchedulerObjectDispatch.cc index 860b2d676b00b..57123b32905a3 100644 --- a/src/test/librbd/io/test_mock_SimpleSchedulerObjectDispatch.cc +++ b/src/test/librbd/io/test_mock_SimpleSchedulerObjectDispatch.cc @@ -113,8 +113,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Read) { C_SaferCond cond; Context *on_finish = &cond; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.read( - ictx->get_object_name(0), 0, 0, 4096, CEPH_NOSNAP, 0, {}, nullptr, - nullptr, nullptr, nullptr, &on_finish, nullptr)); + 0, 0, 4096, CEPH_NOSNAP, 0, {}, nullptr, nullptr, nullptr, nullptr, + &on_finish, nullptr)); ASSERT_EQ(on_finish, &cond); // not modified on_finish->complete(0); ASSERT_EQ(0, cond.wait()); @@ -131,8 +131,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Discard) { C_SaferCond cond; Context *on_finish = &cond; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.discard( - ictx->get_object_name(0), 0, 0, 4096, mock_image_ctx.snapc, 0, {}, - nullptr, nullptr, nullptr, &on_finish, nullptr)); + 0, 0, 4096, mock_image_ctx.snapc, 0, {}, nullptr, nullptr, nullptr, + &on_finish, nullptr)); ASSERT_NE(on_finish, &cond); on_finish->complete(0); ASSERT_EQ(0, cond.wait()); @@ -152,8 +152,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Write) { C_SaferCond cond; Context *on_finish = &cond; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish, nullptr)); ASSERT_NE(on_finish, &cond); on_finish->complete(0); ASSERT_EQ(0, cond.wait()); @@ -172,9 +172,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteSame) { C_SaferCond cond; Context *on_finish = &cond; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write_same( - ictx->get_object_name(0), 0, 0, 4096, std::move(buffer_extents), - std::move(data), mock_image_ctx.snapc, 0, {}, nullptr, nullptr, nullptr, - &on_finish, nullptr)); + 0, 0, 4096, std::move(buffer_extents), std::move(data), + mock_image_ctx.snapc, 0, {}, nullptr, nullptr, nullptr, &on_finish, + nullptr)); ASSERT_NE(on_finish, &cond); on_finish->complete(0); ASSERT_EQ(0, cond.wait()); @@ -193,9 +193,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, CompareAndWrite) { C_SaferCond cond; Context *on_finish = &cond; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.compare_and_write( - ictx->get_object_name(0), 0, 0, std::move(cmp_data), - std::move(write_data), mock_image_ctx.snapc, 0, {}, nullptr, nullptr, - nullptr, nullptr, &on_finish, nullptr)); + 0, 0, std::move(cmp_data), std::move(write_data), mock_image_ctx.snapc, 0, + {}, nullptr, nullptr, nullptr, nullptr, &on_finish, nullptr)); ASSERT_NE(on_finish, &cond); on_finish->complete(0); ASSERT_EQ(0, cond.wait()); @@ -236,8 +235,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayed) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -248,8 +247,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayed) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, &on_dispatched)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); @@ -283,8 +282,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayedFlush) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -295,8 +294,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteDelayedFlush) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, &on_dispatched)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); @@ -338,8 +337,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -353,9 +352,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched2; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish2, &on_dispatched2)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + &on_dispatched2)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); ASSERT_NE(timer_task, nullptr); @@ -367,9 +366,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { Context *on_finish3 = &cond3; C_SaferCond on_dispatched3; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish3, &on_dispatched3)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish3, + &on_dispatched3)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish3, &cond3); @@ -380,9 +379,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { Context *on_finish4 = &cond4; C_SaferCond on_dispatched4; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish4, &on_dispatched4)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish4, + &on_dispatched4)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish4, &cond4); @@ -393,9 +392,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { Context *on_finish5 = &cond5; C_SaferCond on_dispatched5; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish5, &on_dispatched5)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish5, + &on_dispatched5)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish5, &cond5); @@ -406,9 +405,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteMerged) { Context *on_finish6 = &cond6; C_SaferCond on_dispatched6; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish6, &on_dispatched6)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish6, + &on_dispatched6)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish6, &cond6); @@ -454,8 +453,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteNonSequential) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -469,9 +468,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteNonSequential) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched2; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish2, &on_dispatched2)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + &on_dispatched2)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); ASSERT_NE(timer_task, nullptr); @@ -485,9 +484,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, WriteNonSequential) { C_SaferCond cond3; Context *on_finish3 = &cond3; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish3, nullptr)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish3, nullptr)); ASSERT_NE(on_finish3, &cond3); on_finish1->complete(0); @@ -518,8 +516,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); // write (2) 0~10 (delayed) @@ -534,9 +532,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched2; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish2, &on_dispatched2)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + &on_dispatched2)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); ASSERT_NE(timer_task, nullptr); @@ -550,9 +548,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { Context *on_finish3 = &cond3; C_SaferCond on_dispatched3; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish3, &on_dispatched3)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish3, + &on_dispatched3)); ASSERT_EQ(on_finish3, &cond3); // discard (1) (non-seq io) @@ -563,8 +561,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { C_SaferCond cond4; Context *on_finish4 = &cond4; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.discard( - ictx->get_object_name(0), 0, 4096, 4096, mock_image_ctx.snapc, 0, {}, - nullptr, nullptr, nullptr, &on_finish4, nullptr)); + 0, 4096, 4096, mock_image_ctx.snapc, 0, {}, nullptr, nullptr, nullptr, + &on_finish4, nullptr)); ASSERT_NE(on_finish4, &cond4); ASSERT_EQ(0, on_dispatched2.wait()); ASSERT_EQ(0, on_dispatched3.wait()); @@ -580,9 +578,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { Context *on_finish5 = &cond5; C_SaferCond on_dispatched5; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish5, &on_dispatched5)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish5, + &on_dispatched5)); ASSERT_EQ(on_finish5, &cond5); ASSERT_NE(timer_task, nullptr); @@ -594,8 +592,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { C_SaferCond cond6; Context *on_finish6 = &cond6; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.discard( - ictx->get_object_name(0), 0, 4096, 4096, mock_image_ctx.snapc, 0, {}, - nullptr, nullptr, nullptr, &on_finish6, nullptr)); + 0, 4096, 4096, mock_image_ctx.snapc, 0, {}, nullptr, nullptr, nullptr, + &on_finish6, nullptr)); ASSERT_NE(on_finish6, &cond6); ASSERT_EQ(0, on_dispatched5.wait()); @@ -610,9 +608,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Mixed) { Context *on_finish7 = &cond7; C_SaferCond on_dispatched7; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, object_off, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish7, &on_dispatched7)); + 0, object_off, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish7, + &on_dispatched7)); ASSERT_EQ(on_finish7, &cond7); ASSERT_NE(timer_task, nullptr); @@ -673,9 +671,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(object_no), object_no, 0, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, nullptr, - &on_finish1, nullptr)); + object_no, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -687,9 +684,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched2; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(object_no), object_no, 0, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish2, &on_dispatched2)); + object_no, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + &on_dispatched2)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); ASSERT_NE(timer_task, nullptr); @@ -701,9 +698,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) { C_SaferCond cond3; Context *on_finish3 = &cond3; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(object_no), object_no, 0, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, nullptr, - &on_finish3, nullptr)); + object_no, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish3, nullptr)); ASSERT_NE(on_finish3, &cond3); data.clear(); @@ -711,9 +707,9 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, DispatchQueue) { Context *on_finish4 = &cond4; C_SaferCond on_dispatched4; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(object_no), object_no, 0, std::move(data), - mock_image_ctx.snapc, 0, {}, &object_dispatch_flags, nullptr, - &dispatch_result, &on_finish4, &on_dispatched4)); + object_no, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish4, + &on_dispatched4)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish4, &cond4); @@ -758,8 +754,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Timer) { C_SaferCond cond1; Context *on_finish1 = &cond1; ASSERT_FALSE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, nullptr, &on_finish1, nullptr)); ASSERT_NE(on_finish1, &cond1); Context *timer_task = nullptr; @@ -771,8 +767,8 @@ TEST_F(TestMockIoSimpleSchedulerObjectDispatch, Timer) { Context *on_finish2 = &cond2; C_SaferCond on_dispatched; ASSERT_TRUE(mock_simple_scheduler_object_dispatch.write( - ictx->get_object_name(0), 0, 0, std::move(data), mock_image_ctx.snapc, 0, - {}, &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, + 0, 0, std::move(data), mock_image_ctx.snapc, 0, {}, + &object_dispatch_flags, nullptr, &dispatch_result, &on_finish2, &on_dispatched)); ASSERT_EQ(dispatch_result, io::DISPATCH_RESULT_COMPLETE); ASSERT_EQ(on_finish2, &cond2); diff --git a/src/test/librbd/mock/io/MockObjectDispatch.h b/src/test/librbd/mock/io/MockObjectDispatch.h index ac09bcfa6e8d6..5a81acb8b0185 100644 --- a/src/test/librbd/mock/io/MockObjectDispatch.h +++ b/src/test/librbd/mock/io/MockObjectDispatch.h @@ -28,8 +28,8 @@ public: bool(uint64_t, uint64_t, uint64_t, librados::snap_t, ceph::bufferlist*, ExtentMap*, DispatchResult*, Context*)); bool read( - const std::string& oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, librados::snap_t snap_id, int op_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + librados::snap_t snap_id, int op_flags, const ZTracer::Trace& parent_trace, ceph::bufferlist* read_data, ExtentMap* extent_map, int* dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, @@ -42,8 +42,8 @@ public: bool(uint64_t, uint64_t, uint64_t, const ::SnapContext &, int, int*, uint64_t*, DispatchResult*, Context*)); bool discard( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, const ::SnapContext &snapc, int discard_flags, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + const ::SnapContext &snapc, int discard_flags, const ZTracer::Trace &parent_trace, int* dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -57,8 +57,8 @@ public: const ::SnapContext &, int*, uint64_t*, DispatchResult*, Context *)); bool write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& data, + const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { @@ -71,8 +71,8 @@ public: const ceph::bufferlist&, const ::SnapContext &, int*, uint64_t*, DispatchResult*, Context *)); bool write_same( - const std::string &oid, uint64_t object_no, uint64_t object_off, - uint64_t object_len, Extents&& buffer_extents, ceph::bufferlist&& data, + uint64_t object_no, uint64_t object_off, uint64_t object_len, + Extents&& buffer_extents, ceph::bufferlist&& data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, int* dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, @@ -87,9 +87,8 @@ public: const ceph::bufferlist&, uint64_t*, int*, uint64_t*, DispatchResult*, Context *)); bool compare_and_write( - const std::string &oid, uint64_t object_no, uint64_t object_off, - ceph::bufferlist&& cmp_data, ceph::bufferlist&& write_data, - const ::SnapContext &snapc, int op_flags, + uint64_t object_no, uint64_t object_off, ceph::bufferlist&& cmp_data, + ceph::bufferlist&& write_data, const ::SnapContext &snapc, int op_flags, const ZTracer::Trace &parent_trace, uint64_t* mismatch_offset, int* dispatch_flags, uint64_t* journal_tid, DispatchResult* dispatch_result, Context** on_finish, -- 2.39.5