From 7b50768227d5896ad92f32d87511b5a30fc27c88 Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Tue, 13 Jun 2023 13:36:02 +0200 Subject: [PATCH] librbd: stop passing IOContext to image dispatch write methods This is a major footgun since any value passed e.g. at the API layer may be stale by the time we get to object dispatch. All callers are passing the IOContext returned by get_data_io_context() for their ImageCtx anyway, highlighting that the parameter is fictitious. Only the read method can meaningfully take IOContext. Signed-off-by: Ilya Dryomov (cherry picked from commit 584f865ae116185087176715ced014b625f04e82) --- src/librbd/api/Io.cc | 26 +++++-------- src/librbd/cache/ImageWriteback.cc | 10 ++--- src/librbd/cache/WriteLogImageDispatch.cc | 20 +++++----- src/librbd/cache/WriteLogImageDispatch.h | 17 ++++----- src/librbd/crypto/CryptoImageDispatch.h | 21 +++++------ src/librbd/crypto/luks/FlattenRequest.cc | 2 +- src/librbd/crypto/luks/FormatRequest.cc | 3 +- src/librbd/exclusive_lock/ImageDispatch.cc | 11 +++--- src/librbd/exclusive_lock/ImageDispatch.h | 11 +++--- src/librbd/io/ImageDispatch.cc | 17 ++++----- src/librbd/io/ImageDispatch.h | 17 ++++----- src/librbd/io/ImageDispatchInterface.h | 17 ++++----- src/librbd/io/ImageDispatchSpec.h | 19 ++++------ src/librbd/io/ImageDispatcher.cc | 21 +++++------ src/librbd/io/QosImageDispatch.cc | 17 ++++----- src/librbd/io/QosImageDispatch.h | 17 ++++----- src/librbd/io/QueueImageDispatch.cc | 15 ++++---- src/librbd/io/QueueImageDispatch.h | 17 ++++----- src/librbd/io/RefreshImageDispatch.cc | 17 ++++----- src/librbd/io/RefreshImageDispatch.h | 17 ++++----- src/librbd/io/WriteBlockImageDispatch.cc | 17 ++++----- src/librbd/io/WriteBlockImageDispatch.h | 17 ++++----- src/librbd/migration/ImageDispatch.cc | 11 +++--- src/librbd/migration/ImageDispatch.h | 11 +++--- src/test/librbd/io/test_mock_ImageRequest.cc | 39 ++++++++------------ src/test/librbd/journal/test_mock_Replay.cc | 8 ++-- src/test/librbd/mock/io/MockImageDispatch.h | 17 ++++----- 27 files changed, 192 insertions(+), 240 deletions(-) diff --git a/src/librbd/api/Io.cc b/src/librbd/api/Io.cc index af9d3ebe5cfcc..c1bd38fc07e41 100644 --- a/src/librbd/api/Io.cc +++ b/src/librbd/api/Io.cc @@ -269,8 +269,7 @@ void Io::aio_write(I &image_ctx, io::AioCompletion *aio_comp, uint64_t off, auto req = io::ImageDispatchSpec::create_write( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, std::move(bl), - image_ctx.get_data_io_context(), op_flags, trace); + {{off, len}}, io::ImageArea::DATA, std::move(bl), op_flags, trace); req->send(); } @@ -301,8 +300,7 @@ void Io::aio_discard(I &image_ctx, io::AioCompletion *aio_comp, uint64_t off, auto req = io::ImageDispatchSpec::create_discard( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, discard_granularity_bytes, - image_ctx.get_data_io_context(), trace); + {{off, len}}, io::ImageArea::DATA, discard_granularity_bytes, trace); req->send(); } @@ -334,8 +332,7 @@ void Io::aio_write_same(I &image_ctx, io::AioCompletion *aio_comp, auto req = io::ImageDispatchSpec::create_write_same( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, std::move(bl), - image_ctx.get_data_io_context(), op_flags, trace); + {{off, len}}, io::ImageArea::DATA, std::move(bl), op_flags, trace); req->send(); } @@ -408,8 +405,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, aio_comp->aio_type = io::AIO_TYPE_WRITE; auto req = io::ImageDispatchSpec::create_write( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, std::move(bl), - image_ctx.get_data_io_context(), op_flags, trace); + {{off, len}}, io::ImageArea::DATA, std::move(bl), op_flags, trace); req->send(); return; } else if (prepend_length == 0 && append_length == 0) { @@ -419,8 +415,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, auto req = io::ImageDispatchSpec::create_write_same( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, std::move(bl), - image_ctx.get_data_io_context(), op_flags, trace); + {{off, len}}, io::ImageArea::DATA, std::move(bl), op_flags, trace); req->send(); return; } @@ -449,7 +444,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, auto prepend_req = io::ImageDispatchSpec::create_write( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, prepend_aio_comp, {{prepend_offset, prepend_length}}, io::ImageArea::DATA, - std::move(bl), image_ctx.get_data_io_context(), op_flags, trace); + std::move(bl), op_flags, trace); prepend_req->send(); } @@ -463,7 +458,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, auto append_req = io::ImageDispatchSpec::create_write( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, append_aio_comp, {{append_offset, append_length}}, io::ImageArea::DATA, - std::move(bl), image_ctx.get_data_io_context(), op_flags, trace); + std::move(bl), op_flags, trace); append_req->send(); } @@ -476,7 +471,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, auto req = io::ImageDispatchSpec::create_write_same( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, write_same_aio_comp, {{write_same_offset, write_same_length}}, io::ImageArea::DATA, - std::move(bl), image_ctx.get_data_io_context(), op_flags, trace); + std::move(bl), op_flags, trace); req->send(); return; } @@ -486,8 +481,7 @@ void Io::aio_write_zeroes(I& image_ctx, io::AioCompletion *aio_comp, auto req = io::ImageDispatchSpec::create_discard( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{off, len}}, io::ImageArea::DATA, discard_granularity_bytes, - image_ctx.get_data_io_context(), trace); + {{off, len}}, io::ImageArea::DATA, discard_granularity_bytes, trace); req->send(); } @@ -522,7 +516,7 @@ void Io::aio_compare_and_write(I &image_ctx, io::AioCompletion *aio_comp, auto req = io::ImageDispatchSpec::create_compare_and_write( image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, {{off, len}}, io::ImageArea::DATA, std::move(cmp_bl), std::move(bl), - mismatch_off, image_ctx.get_data_io_context(), op_flags, trace); + mismatch_off, op_flags, trace); req->send(); } diff --git a/src/librbd/cache/ImageWriteback.cc b/src/librbd/cache/ImageWriteback.cc index 1145a8c9dc4a3..40422534ba34a 100644 --- a/src/librbd/cache/ImageWriteback.cc +++ b/src/librbd/cache/ImageWriteback.cc @@ -56,7 +56,7 @@ void ImageWriteback::aio_write(Extents &&image_extents, auto req = io::ImageDispatchSpec::create_write( *image_ctx, io::IMAGE_DISPATCH_LAYER_WRITEBACK_CACHE, aio_comp, std::move(image_extents), io::ImageArea::DATA, std::move(bl), - image_ctx->get_data_io_context(), fadvise_flags, trace); + fadvise_flags, trace); req->send(); } @@ -75,8 +75,7 @@ void ImageWriteback::aio_discard(uint64_t offset, uint64_t length, ZTracer::Trace trace; auto req = io::ImageDispatchSpec::create_discard( *image_ctx, io::IMAGE_DISPATCH_LAYER_WRITEBACK_CACHE, aio_comp, - {{offset, length}}, io::ImageArea::DATA, discard_granularity_bytes, - image_ctx->get_data_io_context(), trace); + {{offset, length}}, io::ImageArea::DATA, discard_granularity_bytes, trace); req->send(); } @@ -114,7 +113,7 @@ void ImageWriteback::aio_writesame(uint64_t offset, uint64_t length, auto req = io::ImageDispatchSpec::create_write_same( *image_ctx, io::IMAGE_DISPATCH_LAYER_WRITEBACK_CACHE, aio_comp, {{offset, length}}, io::ImageArea::DATA, std::move(bl), - image_ctx->get_data_io_context(), fadvise_flags, trace); + fadvise_flags, trace); req->send(); } @@ -136,8 +135,7 @@ void ImageWriteback::aio_compare_and_write(Extents &&image_extents, auto req = io::ImageDispatchSpec::create_compare_and_write( *image_ctx, io::IMAGE_DISPATCH_LAYER_WRITEBACK_CACHE, aio_comp, std::move(image_extents), io::ImageArea::DATA, std::move(cmp_bl), - std::move(bl), mismatch_offset, image_ctx->get_data_io_context(), - fadvise_flags, trace); + std::move(bl), mismatch_offset, fadvise_flags, trace); req->send(); } diff --git a/src/librbd/cache/WriteLogImageDispatch.cc b/src/librbd/cache/WriteLogImageDispatch.cc index 07b1422f37903..7e0040fe7da8f 100644 --- a/src/librbd/cache/WriteLogImageDispatch.cc +++ b/src/librbd/cache/WriteLogImageDispatch.cc @@ -71,7 +71,7 @@ bool WriteLogImageDispatch::read( template bool WriteLogImageDispatch::write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -97,8 +97,7 @@ bool WriteLogImageDispatch::write( template bool WriteLogImageDispatch::discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -126,10 +125,9 @@ bool WriteLogImageDispatch::discard( template bool WriteLogImageDispatch::write_same( - io::AioCompletion* aio_comp, io::Extents &&image_extents, - bufferlist &&bl, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { if (*image_dispatch_flags & io::IMAGE_DISPATCH_FLAG_CRYPTO_HEADER) { @@ -156,10 +154,10 @@ bool WriteLogImageDispatch::write_same( template bool WriteLogImageDispatch::compare_and_write( - io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + io::AioCompletion* aio_comp, io::Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { if (*image_dispatch_flags & io::IMAGE_DISPATCH_FLAG_CRYPTO_HEADER) { diff --git a/src/librbd/cache/WriteLogImageDispatch.h b/src/librbd/cache/WriteLogImageDispatch.h index 9344916237ed3..f68f37dc750c7 100644 --- a/src/librbd/cache/WriteLogImageDispatch.h +++ b/src/librbd/cache/WriteLogImageDispatch.h @@ -48,30 +48,27 @@ public: Context* on_dispatched) override; bool write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, - bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/crypto/CryptoImageDispatch.h b/src/librbd/crypto/CryptoImageDispatch.h index 737104006af2a..3ce658981d0a2 100644 --- a/src/librbd/crypto/CryptoImageDispatch.h +++ b/src/librbd/crypto/CryptoImageDispatch.h @@ -35,10 +35,9 @@ public: } bool write( - io::AioCompletion* aio_comp, io::Extents &&image_extents, - bufferlist &&bl, IOContext io_context, int op_flags, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { return false; @@ -46,19 +45,17 @@ public: bool discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { return false; } bool write_same( - io::AioCompletion* aio_comp, io::Extents &&image_extents, - bufferlist &&bl, IOContext io_context, int op_flags, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { return false; @@ -67,7 +64,7 @@ public: bool compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { diff --git a/src/librbd/crypto/luks/FlattenRequest.cc b/src/librbd/crypto/luks/FlattenRequest.cc index edc7e3c475adc..fdf6b5daeee67 100644 --- a/src/librbd/crypto/luks/FlattenRequest.cc +++ b/src/librbd/crypto/luks/FlattenRequest.cc @@ -97,7 +97,7 @@ void FlattenRequest::write_header() { auto req = io::ImageDispatchSpec::create_write( *m_image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, {{0, m_bl.length()}}, io::ImageArea::CRYPTO_HEADER, - std::move(m_bl), m_image_ctx->get_data_io_context(), 0, trace); + std::move(m_bl), 0, trace); req->send(); } diff --git a/src/librbd/crypto/luks/FormatRequest.cc b/src/librbd/crypto/luks/FormatRequest.cc index ec367717c2c58..32673b9cf2779 100644 --- a/src/librbd/crypto/luks/FormatRequest.cc +++ b/src/librbd/crypto/luks/FormatRequest.cc @@ -167,8 +167,7 @@ void FormatRequest::send() { ZTracer::Trace trace; auto req = io::ImageDispatchSpec::create_write( *m_image_ctx, io::IMAGE_DISPATCH_LAYER_API_START, aio_comp, - {{0, bl.length()}}, io::ImageArea::DATA, std::move(bl), - m_image_ctx->get_data_io_context(), 0, trace); + {{0, bl.length()}}, io::ImageArea::DATA, std::move(bl), 0, trace); req->send(); } diff --git a/src/librbd/exclusive_lock/ImageDispatch.cc b/src/librbd/exclusive_lock/ImageDispatch.cc index f53b3692a1b1c..5939c7a819682 100644 --- a/src/librbd/exclusive_lock/ImageDispatch.cc +++ b/src/librbd/exclusive_lock/ImageDispatch.cc @@ -125,7 +125,7 @@ bool ImageDispatch::read( template bool ImageDispatch::write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -143,9 +143,8 @@ bool ImageDispatch::write( template bool ImageDispatch::discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -162,7 +161,7 @@ bool ImageDispatch::discard( template bool ImageDispatch::write_same( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -181,7 +180,7 @@ template bool ImageDispatch::compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { diff --git a/src/librbd/exclusive_lock/ImageDispatch.h b/src/librbd/exclusive_lock/ImageDispatch.h index 77c101973efe3..c0d9d49f54c4f 100644 --- a/src/librbd/exclusive_lock/ImageDispatch.h +++ b/src/librbd/exclusive_lock/ImageDispatch.h @@ -58,27 +58,26 @@ public: Context* on_dispatched) override; bool write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; diff --git a/src/librbd/io/ImageDispatch.cc b/src/librbd/io/ImageDispatch.cc index 699e85d535182..12c55cb0c6659 100644 --- a/src/librbd/io/ImageDispatch.cc +++ b/src/librbd/io/ImageDispatch.cc @@ -62,7 +62,7 @@ bool ImageDispatch::read( template bool ImageDispatch::write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -82,9 +82,8 @@ bool ImageDispatch::write( template bool ImageDispatch::discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -103,7 +102,7 @@ bool ImageDispatch::discard( template bool ImageDispatch::write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -123,10 +122,10 @@ bool ImageDispatch::write_same( template bool ImageDispatch::compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; diff --git a/src/librbd/io/ImageDispatch.h b/src/librbd/io/ImageDispatch.h index 3d302e9a62a04..4a89c605450ee 100644 --- a/src/librbd/io/ImageDispatch.h +++ b/src/librbd/io/ImageDispatch.h @@ -42,28 +42,27 @@ public: Context* on_dispatched) override; bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/io/ImageDispatchInterface.h b/src/librbd/io/ImageDispatchInterface.h index 205c18c474fa7..e479f7eefcfa3 100644 --- a/src/librbd/io/ImageDispatchInterface.h +++ b/src/librbd/io/ImageDispatchInterface.h @@ -40,28 +40,27 @@ struct ImageDispatchInterface { Context* on_dispatched) = 0; virtual bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) = 0; virtual bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, - IOContext io_context, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) = 0; virtual bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) = 0; virtual bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) = 0; virtual bool flush( diff --git a/src/librbd/io/ImageDispatchSpec.h b/src/librbd/io/ImageDispatchSpec.h index 8e2c452735a53..9323f9879fe56 100644 --- a/src/librbd/io/ImageDispatchSpec.h +++ b/src/librbd/io/ImageDispatchSpec.h @@ -139,39 +139,36 @@ public: static ImageDispatchSpec* create_discard( ImageCtxT &image_ctx, ImageDispatchLayer image_dispatch_layer, AioCompletion *aio_comp, Extents &&image_extents, ImageArea area, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace) { + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace) { return new ImageDispatchSpec(image_ctx.io_image_dispatcher, image_dispatch_layer, aio_comp, std::move(image_extents), area, Discard{discard_granularity_bytes}, - io_context, 0, parent_trace); + {}, 0, parent_trace); } template static ImageDispatchSpec* create_write( ImageCtxT &image_ctx, ImageDispatchLayer image_dispatch_layer, AioCompletion *aio_comp, Extents &&image_extents, ImageArea area, - bufferlist &&bl, IOContext io_context, int op_flags, - const ZTracer::Trace &parent_trace) { + bufferlist &&bl, int op_flags, const ZTracer::Trace &parent_trace) { return new ImageDispatchSpec(image_ctx.io_image_dispatcher, image_dispatch_layer, aio_comp, std::move(image_extents), area, Write{std::move(bl)}, - io_context, op_flags, parent_trace); + {}, op_flags, parent_trace); } template static ImageDispatchSpec* create_write_same( ImageCtxT &image_ctx, ImageDispatchLayer image_dispatch_layer, AioCompletion *aio_comp, Extents &&image_extents, ImageArea area, - bufferlist &&bl, IOContext io_context, int op_flags, - const ZTracer::Trace &parent_trace) { + bufferlist &&bl, int op_flags, const ZTracer::Trace &parent_trace) { return new ImageDispatchSpec(image_ctx.io_image_dispatcher, image_dispatch_layer, aio_comp, std::move(image_extents), area, WriteSame{std::move(bl)}, - io_context, op_flags, parent_trace); + {}, op_flags, parent_trace); } template @@ -179,14 +176,14 @@ public: ImageCtxT &image_ctx, ImageDispatchLayer image_dispatch_layer, AioCompletion *aio_comp, Extents &&image_extents, ImageArea area, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace) { + int op_flags, const ZTracer::Trace &parent_trace) { return new ImageDispatchSpec(image_ctx.io_image_dispatcher, image_dispatch_layer, aio_comp, std::move(image_extents), area, CompareAndWrite{std::move(cmp_bl), std::move(bl), mismatch_offset}, - io_context, op_flags, parent_trace); + {}, op_flags, parent_trace); } template diff --git a/src/librbd/io/ImageDispatcher.cc b/src/librbd/io/ImageDispatcher.cc index e7e5dda959639..4aa7929b2eba7 100644 --- a/src/librbd/io/ImageDispatcher.cc +++ b/src/librbd/io/ImageDispatcher.cc @@ -53,9 +53,8 @@ struct ImageDispatcher::SendVisitor : public boost::static_visitor { return image_dispatch->discard( image_dispatch_spec->aio_comp, std::move(image_dispatch_spec->image_extents), - discard.discard_granularity_bytes, image_dispatch_spec->io_context, - image_dispatch_spec->parent_trace, image_dispatch_spec->tid, - &image_dispatch_spec->image_dispatch_flags, + discard.discard_granularity_bytes, image_dispatch_spec->parent_trace, + image_dispatch_spec->tid, &image_dispatch_spec->image_dispatch_flags, &image_dispatch_spec->dispatch_result, &image_dispatch_spec->aio_comp->image_dispatcher_ctx, &image_dispatch_spec->dispatcher_ctx); @@ -65,33 +64,31 @@ struct ImageDispatcher::SendVisitor : public boost::static_visitor { return image_dispatch->write( image_dispatch_spec->aio_comp, std::move(image_dispatch_spec->image_extents), std::move(write.bl), - image_dispatch_spec->io_context, image_dispatch_spec->op_flags, - image_dispatch_spec->parent_trace, image_dispatch_spec->tid, - &image_dispatch_spec->image_dispatch_flags, + image_dispatch_spec->op_flags, image_dispatch_spec->parent_trace, + image_dispatch_spec->tid, &image_dispatch_spec->image_dispatch_flags, &image_dispatch_spec->dispatch_result, &image_dispatch_spec->aio_comp->image_dispatcher_ctx, &image_dispatch_spec->dispatcher_ctx); } - bool operator()(ImageDispatchSpec::WriteSame& write_same) const { + bool operator()(ImageDispatchSpec::WriteSame& write_same) const { return image_dispatch->write_same( image_dispatch_spec->aio_comp, std::move(image_dispatch_spec->image_extents), std::move(write_same.bl), - image_dispatch_spec->io_context, image_dispatch_spec->op_flags, - image_dispatch_spec->parent_trace, image_dispatch_spec->tid, - &image_dispatch_spec->image_dispatch_flags, + image_dispatch_spec->op_flags, image_dispatch_spec->parent_trace, + image_dispatch_spec->tid, &image_dispatch_spec->image_dispatch_flags, &image_dispatch_spec->dispatch_result, &image_dispatch_spec->aio_comp->image_dispatcher_ctx, &image_dispatch_spec->dispatcher_ctx); } - bool operator()( + bool operator()( ImageDispatchSpec::CompareAndWrite& compare_and_write) const { return image_dispatch->compare_and_write( image_dispatch_spec->aio_comp, std::move(image_dispatch_spec->image_extents), std::move(compare_and_write.cmp_bl), std::move(compare_and_write.bl), - compare_and_write.mismatch_offset, image_dispatch_spec->io_context, + compare_and_write.mismatch_offset, image_dispatch_spec->op_flags, image_dispatch_spec->parent_trace, image_dispatch_spec->tid, &image_dispatch_spec->image_dispatch_flags, &image_dispatch_spec->dispatch_result, diff --git a/src/librbd/io/QosImageDispatch.cc b/src/librbd/io/QosImageDispatch.cc index 96be195c59a19..ea1d5dbb5fcd2 100644 --- a/src/librbd/io/QosImageDispatch.cc +++ b/src/librbd/io/QosImageDispatch.cc @@ -144,7 +144,7 @@ bool QosImageDispatch::read( template bool QosImageDispatch::write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -167,9 +167,8 @@ bool QosImageDispatch::write( template bool QosImageDispatch::discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -191,7 +190,7 @@ bool QosImageDispatch::discard( template bool QosImageDispatch::write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -213,10 +212,10 @@ bool QosImageDispatch::write_same( template bool QosImageDispatch::compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; diff --git a/src/librbd/io/QosImageDispatch.h b/src/librbd/io/QosImageDispatch.h index 885e2545ceafe..f5e08940a4b12 100644 --- a/src/librbd/io/QosImageDispatch.h +++ b/src/librbd/io/QosImageDispatch.h @@ -62,28 +62,27 @@ public: Context* on_dispatched) override; bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/io/QueueImageDispatch.cc b/src/librbd/io/QueueImageDispatch.cc index e80d39e44210e..ea5ed63b4be50 100644 --- a/src/librbd/io/QueueImageDispatch.cc +++ b/src/librbd/io/QueueImageDispatch.cc @@ -54,7 +54,7 @@ bool QueueImageDispatch::read( template bool QueueImageDispatch::write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -67,8 +67,7 @@ bool QueueImageDispatch::write( template bool QueueImageDispatch::discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -81,7 +80,7 @@ bool QueueImageDispatch::discard( template bool QueueImageDispatch::write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -93,10 +92,10 @@ bool QueueImageDispatch::write_same( template bool QueueImageDispatch::compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; diff --git a/src/librbd/io/QueueImageDispatch.h b/src/librbd/io/QueueImageDispatch.h index 60ee467502dad..9a41927ba379b 100644 --- a/src/librbd/io/QueueImageDispatch.h +++ b/src/librbd/io/QueueImageDispatch.h @@ -46,28 +46,27 @@ public: Context* on_dispatched) override; bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/io/RefreshImageDispatch.cc b/src/librbd/io/RefreshImageDispatch.cc index 5199f01d85d8f..3141faf2526f6 100644 --- a/src/librbd/io/RefreshImageDispatch.cc +++ b/src/librbd/io/RefreshImageDispatch.cc @@ -49,7 +49,7 @@ bool RefreshImageDispatch::read( template bool RefreshImageDispatch::write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -67,9 +67,8 @@ bool RefreshImageDispatch::write( template bool RefreshImageDispatch::discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -86,7 +85,7 @@ bool RefreshImageDispatch::discard( template bool RefreshImageDispatch::write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -103,10 +102,10 @@ bool RefreshImageDispatch::write_same( template bool RefreshImageDispatch::compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; diff --git a/src/librbd/io/RefreshImageDispatch.h b/src/librbd/io/RefreshImageDispatch.h index 1bcb3c312cf7a..668dec4195a4d 100644 --- a/src/librbd/io/RefreshImageDispatch.h +++ b/src/librbd/io/RefreshImageDispatch.h @@ -42,28 +42,27 @@ public: Context* on_dispatched) override; bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/io/WriteBlockImageDispatch.cc b/src/librbd/io/WriteBlockImageDispatch.cc index 4439a15a797ed..57d181d20e30d 100644 --- a/src/librbd/io/WriteBlockImageDispatch.cc +++ b/src/librbd/io/WriteBlockImageDispatch.cc @@ -127,7 +127,7 @@ void WriteBlockImageDispatch::wait_on_writes_unblocked( template bool WriteBlockImageDispatch::write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -140,9 +140,8 @@ bool WriteBlockImageDispatch::write( template bool WriteBlockImageDispatch::discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -154,7 +153,7 @@ bool WriteBlockImageDispatch::discard( template bool WriteBlockImageDispatch::write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -166,10 +165,10 @@ bool WriteBlockImageDispatch::write_same( template bool WriteBlockImageDispatch::compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; diff --git a/src/librbd/io/WriteBlockImageDispatch.h b/src/librbd/io/WriteBlockImageDispatch.h index 9d200fb975306..b1d0ddb0ed094 100644 --- a/src/librbd/io/WriteBlockImageDispatch.h +++ b/src/librbd/io/WriteBlockImageDispatch.h @@ -57,28 +57,27 @@ public: } bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool flush( diff --git a/src/librbd/migration/ImageDispatch.cc b/src/librbd/migration/ImageDispatch.cc index 3aa2eeb0bcb0a..1ae143d78615a 100644 --- a/src/librbd/migration/ImageDispatch.cc +++ b/src/librbd/migration/ImageDispatch.cc @@ -52,7 +52,7 @@ bool ImageDispatch::read( template bool ImageDispatch::write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -66,9 +66,8 @@ bool ImageDispatch::write( template bool ImageDispatch::discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, - IOContext io_context, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { auto cct = m_image_ctx->cct; @@ -81,7 +80,7 @@ bool ImageDispatch::discard( template bool ImageDispatch::write_same( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { @@ -96,7 +95,7 @@ template bool ImageDispatch::compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) { diff --git a/src/librbd/migration/ImageDispatch.h b/src/librbd/migration/ImageDispatch.h index 03bb3aa521373..cd96141c0cc74 100644 --- a/src/librbd/migration/ImageDispatch.h +++ b/src/librbd/migration/ImageDispatch.h @@ -42,27 +42,26 @@ public: Context* on_dispatched) override; bool write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool discard( io::AioCompletion* aio_comp, io::Extents &&image_extents, - uint32_t discard_granularity_bytes, - IOContext io_context, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool write_same( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; bool compare_and_write( io::AioCompletion* aio_comp, io::Extents &&image_extents, bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, io::DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override; diff --git a/src/test/librbd/io/test_mock_ImageRequest.cc b/src/test/librbd/io/test_mock_ImageRequest.cc index 546f2d04d9643..9d6423d66c4b8 100644 --- a/src/test/librbd/io/test_mock_ImageRequest.cc +++ b/src/test/librbd/io/test_mock_ImageRequest.cc @@ -211,7 +211,7 @@ TEST_F(TestMockIoImageRequest, AioWriteModifyTimestamp) { bl.append("1"); MockImageWriteRequest mock_aio_image_write_1( mock_image_ctx, aio_comp_1, {{0, 1}}, ImageArea::DATA, std::move(bl), - mock_image_ctx.get_data_io_context(), 0, {}); + 0, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_write_1.send(); @@ -224,7 +224,7 @@ TEST_F(TestMockIoImageRequest, AioWriteModifyTimestamp) { bl.append("1"); MockImageWriteRequest mock_aio_image_write_2( mock_image_ctx, aio_comp_2, {{0, 1}}, ImageArea::DATA, std::move(bl), - mock_image_ctx.get_data_io_context(), 0, {}); + 0, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_write_2.send(); @@ -306,7 +306,7 @@ TEST_F(TestMockIoImageRequest, PartialDiscard) { &aio_comp_ctx, ictx, AIO_TYPE_DISCARD); MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{16, 63}, {84, 100}}, ImageArea::DATA, - ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {}); + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -334,7 +334,7 @@ TEST_F(TestMockIoImageRequest, TailDiscard) { MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{ictx->layout.object_size - 1024, 1024}}, ImageArea::DATA, - ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {}); + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -364,8 +364,7 @@ TEST_F(TestMockIoImageRequest, DiscardGranularity) { MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{16, 63}, {96, 31}, {84, 100}, {ictx->layout.object_size - 33, 33}}, - ImageArea::DATA, ictx->discard_granularity_bytes, - mock_image_ctx.get_data_io_context(), {}); + ImageArea::DATA, ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -397,7 +396,7 @@ TEST_F(TestMockIoImageRequest, PartialDiscardJournalAppendEnabled) { &aio_comp_ctx, ictx, AIO_TYPE_DISCARD); MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{16, 63}, {84, 100}}, ImageArea::DATA, - ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {}); + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -431,7 +430,7 @@ TEST_F(TestMockIoImageRequest, TailDiscardJournalAppendEnabled) { MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{ictx->layout.object_size - 1024, 1024}}, ImageArea::DATA, - ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {}); + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -460,9 +459,8 @@ TEST_F(TestMockIoImageRequest, PruneRequiredDiscardJournalAppendEnabled) { AioCompletion *aio_comp = AioCompletion::create_and_start( &aio_comp_ctx, ictx, AIO_TYPE_DISCARD); MockImageDiscardRequest mock_aio_image_discard( - mock_image_ctx, aio_comp, {{96, 31}}, - ImageArea::DATA, ictx->discard_granularity_bytes, - mock_image_ctx.get_data_io_context(), {}); + mock_image_ctx, aio_comp, {{96, 31}}, ImageArea::DATA, + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -491,9 +489,8 @@ TEST_F(TestMockIoImageRequest, LengthModifiedDiscardJournalAppendEnabled) { AioCompletion *aio_comp = AioCompletion::create_and_start( &aio_comp_ctx, ictx, AIO_TYPE_DISCARD); MockImageDiscardRequest mock_aio_image_discard( - mock_image_ctx, aio_comp, {{16, 63}}, - ImageArea::DATA, ictx->discard_granularity_bytes, - mock_image_ctx.get_data_io_context(), {}); + mock_image_ctx, aio_comp, {{16, 63}}, ImageArea::DATA, + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -531,8 +528,7 @@ TEST_F(TestMockIoImageRequest, DiscardGranularityJournalAppendEnabled) { MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{16, 63}, {96, 31}, {84, 100}, {ictx->layout.object_size - 33, 33}}, - ImageArea::DATA, ictx->discard_granularity_bytes, - mock_image_ctx.get_data_io_context(), {}); + ImageArea::DATA, ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -562,8 +558,7 @@ TEST_F(TestMockIoImageRequest, AioWriteJournalAppendDisabled) { bufferlist bl; bl.append("1"); MockImageWriteRequest mock_aio_image_write( - mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, std::move(bl), - mock_image_ctx.get_data_io_context(), 0, {}); + mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, std::move(bl), 0, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_write.send(); @@ -592,7 +587,7 @@ TEST_F(TestMockIoImageRequest, AioDiscardJournalAppendDisabled) { &aio_comp_ctx, ictx, AIO_TYPE_DISCARD); MockImageDiscardRequest mock_aio_image_discard( mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, - ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {}); + ictx->discard_granularity_bytes, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_discard.send(); @@ -650,8 +645,7 @@ TEST_F(TestMockIoImageRequest, AioWriteSameJournalAppendDisabled) { bufferlist bl; bl.append("1"); MockImageWriteSameRequest mock_aio_image_writesame( - mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, std::move(bl), - mock_image_ctx.get_data_io_context(), 0, {}); + mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, std::move(bl), 0, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_writesame.send(); @@ -685,8 +679,7 @@ TEST_F(TestMockIoImageRequest, AioCompareAndWriteJournalAppendDisabled) { uint64_t mismatch_offset; MockImageCompareAndWriteRequest mock_aio_image_write( mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA, - std::move(cmp_bl), std::move(write_bl), &mismatch_offset, - mock_image_ctx.get_data_io_context(), 0, {}); + std::move(cmp_bl), std::move(write_bl), &mismatch_offset, 0, {}); { std::shared_lock owner_locker{mock_image_ctx.owner_lock}; mock_aio_image_write.send(); diff --git a/src/test/librbd/journal/test_mock_Replay.cc b/src/test/librbd/journal/test_mock_Replay.cc index 7bed2532aa87d..9eb31618e0e33 100644 --- a/src/test/librbd/journal/test_mock_Replay.cc +++ b/src/test/librbd/journal/test_mock_Replay.cc @@ -32,7 +32,7 @@ struct ImageRequest { const bufferlist &bl, int op_flags)); static void aio_write(MockReplayImageCtx *ictx, AioCompletion *c, Extents&& image_extents, ImageArea area, - bufferlist&& bl, IOContext io_context, int op_flags, + bufferlist&& bl, int op_flags, const ZTracer::Trace &parent_trace) { ceph_assert(s_instance != nullptr); s_instance->aio_write(c, image_extents, bl, op_flags); @@ -43,7 +43,6 @@ struct ImageRequest { static void aio_discard(MockReplayImageCtx *ictx, AioCompletion *c, Extents&& image_extents, ImageArea area, uint32_t discard_granularity_bytes, - IOContext io_context, const ZTracer::Trace &parent_trace) { ceph_assert(s_instance != nullptr); s_instance->aio_discard(c, image_extents, discard_granularity_bytes); @@ -62,7 +61,7 @@ struct ImageRequest { int op_flags)); static void aio_writesame(MockReplayImageCtx *ictx, AioCompletion *c, Extents&& image_extents, ImageArea area, - bufferlist&& bl, IOContext io_context, int op_flags, + bufferlist&& bl, int op_flags, const ZTracer::Trace &parent_trace) { ceph_assert(s_instance != nullptr); s_instance->aio_writesame(c, image_extents, bl, op_flags); @@ -75,8 +74,7 @@ struct ImageRequest { static void aio_compare_and_write(MockReplayImageCtx *ictx, AioCompletion *c, Extents&& image_extents, ImageArea area, bufferlist&& cmp_bl, bufferlist&& bl, - uint64_t* mismatch_offset, - IOContext io_context, int op_flags, + uint64_t* mismatch_offset, int op_flags, const ZTracer::Trace &parent_trace) { ceph_assert(s_instance != nullptr); s_instance->aio_compare_and_write(c, image_extents, cmp_bl, bl, diff --git a/src/test/librbd/mock/io/MockImageDispatch.h b/src/test/librbd/mock/io/MockImageDispatch.h index 02dff3487b6a9..f9552bebeffc2 100644 --- a/src/test/librbd/mock/io/MockImageDispatch.h +++ b/src/test/librbd/mock/io/MockImageDispatch.h @@ -32,7 +32,7 @@ public: bool write( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { @@ -41,9 +41,8 @@ public: bool discard( AioCompletion* aio_comp, Extents &&image_extents, - uint32_t discard_granularity_bytes, IOContext io_context, - const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + uint32_t discard_granularity_bytes, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { return false; @@ -51,7 +50,7 @@ public: bool write_same( AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&bl, - IOContext io_context, int op_flags, const ZTracer::Trace &parent_trace, + int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { @@ -59,10 +58,10 @@ public: } bool compare_and_write( - AioCompletion* aio_comp, Extents &&image_extents, bufferlist &&cmp_bl, - bufferlist &&bl, uint64_t *mismatch_offset, IOContext io_context, - int op_flags, const ZTracer::Trace &parent_trace, uint64_t tid, - std::atomic* image_dispatch_flags, + AioCompletion* aio_comp, Extents &&image_extents, + bufferlist &&cmp_bl, bufferlist &&bl, uint64_t *mismatch_offset, + int op_flags, const ZTracer::Trace &parent_trace, + uint64_t tid, std::atomic* image_dispatch_flags, DispatchResult* dispatch_result, Context** on_finish, Context* on_dispatched) override { return false; -- 2.39.5