#include "include/buffer.h"
#include "common/dout.h"
#include "librbd/ImageCtx.h"
+#include "librbd/Utils.h"
#include "librbd/io/AioCompletion.h"
#include "librbd/io/ImageRequest.h"
#include "librbd/io/ReadResult.h"
ldout(cct, 20) << "image_extents=" << image_extents << ", "
<< "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_READ);
- io::ImageReadRequest<I> req(m_image_ctx, aio_comp, std::move(image_extents),
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_READ);
+ io::ImageReadRequest<> req(*image_ctx, aio_comp, std::move(image_extents),
io::ReadResult{bl}, fadvise_flags, {});
req.set_bypass_image_cache();
req.send();
ldout(cct, 20) << "image_extents=" << image_extents << ", "
<< "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_WRITE);
- io::ImageWriteRequest<I> req(m_image_ctx, aio_comp, std::move(image_extents),
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_WRITE);
+ io::ImageWriteRequest<> req(*image_ctx, aio_comp, std::move(image_extents),
std::move(bl), fadvise_flags, {});
req.set_bypass_image_cache();
req.send();
<< "length=" << length << ", "
<< "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_DISCARD);
- io::ImageDiscardRequest<I> req(m_image_ctx, aio_comp, {{offset, length}},
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_DISCARD);
+ io::ImageDiscardRequest<> req(*image_ctx, aio_comp, {{offset, length}},
discard_granularity_bytes, {});
req.set_bypass_image_cache();
req.send();
CephContext *cct = m_image_ctx.cct;
ldout(cct, 20) << "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_FLUSH);
- io::ImageFlushRequest<I> req(m_image_ctx, aio_comp, io::FLUSH_SOURCE_INTERNAL,
- {});
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_FLUSH);
+ io::ImageFlushRequest<> req(*image_ctx, aio_comp, io::FLUSH_SOURCE_INTERNAL, {});
req.set_bypass_image_cache();
req.send();
}
<< "data_len=" << bl.length() << ", "
<< "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_WRITESAME);
- io::ImageWriteSameRequest<I> req(m_image_ctx, aio_comp, {{offset, length}},
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_WRITESAME);
+ io::ImageWriteSameRequest<> req(*image_ctx, aio_comp, {{offset, length}},
std::move(bl), fadvise_flags, {});
req.set_bypass_image_cache();
req.send();
ldout(cct, 20) << "image_extents=" << image_extents << ", "
<< "on_finish=" << on_finish << dendl;
- auto aio_comp = io::AioCompletion::create_and_start(on_finish, &m_image_ctx,
- io::AIO_TYPE_COMPARE_AND_WRITE);
- io::ImageCompareAndWriteRequest<I> req(m_image_ctx, aio_comp,
+ ImageCtx *image_ctx = util::get_image_ctx(&m_image_ctx);
+ auto aio_comp = io::AioCompletion::create_and_start(
+ on_finish, image_ctx, io::AIO_TYPE_COMPARE_AND_WRITE);
+ io::ImageCompareAndWriteRequest<> req(*image_ctx, aio_comp,
std::move(image_extents),
std::move(cmp_bl), std::move(bl),
mismatch_offset, fadvise_flags, {});