namespace util {
-template<>
-void file_to_extents(
- MockTestImageCtx *image_ctx, uint64_t offset, uint64_t length,
- uint64_t buffer_offset,
- striper::LightweightObjectExtents *object_extents) {
+template <>
+void area_to_object_extents(MockTestImageCtx* image_ctx, uint64_t offset,
+ uint64_t length, ImageArea area,
+ uint64_t buffer_offset,
+ striper::LightweightObjectExtents* object_extents) {
Striper::file_to_extents(image_ctx->cct, &image_ctx->layout, offset, length,
0, buffer_offset, object_extents);
}
-template <> void extent_to_file(
- MockTestImageCtx* image_ctx, uint64_t object_no, uint64_t offset,
- uint64_t length,
- std::vector<std::pair<uint64_t, uint64_t> >& extents) {
- Striper::extent_to_file(image_ctx->cct, &image_ctx->layout, object_no,
- offset, length, extents);
+template <>
+std::pair<Extents, ImageArea> object_to_area_extents(
+ MockTestImageCtx* image_ctx, uint64_t object_no,
+ const Extents& object_extents) {
+ Extents extents;
+ for (auto [off, len] : object_extents) {
+ Striper::extent_to_file(image_ctx->cct, &image_ctx->layout, object_no, off,
+ len, extents);
+ }
+ return {std::move(extents), ImageArea::DATA};
}
} // namespace util
bufferlist bl;
bl.append("1");
MockImageWriteRequest mock_aio_image_write_1(
- mock_image_ctx, aio_comp_1, {{0, 1}}, std::move(bl),
- mock_image_ctx.get_data_io_context(), 0, {});
+ mock_image_ctx, aio_comp_1, {{0, 1}}, ImageArea::DATA, std::move(bl),
+ 0, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_write_1.send();
bl.append("1");
MockImageWriteRequest mock_aio_image_write_2(
- mock_image_ctx, aio_comp_2, {{0, 1}}, std::move(bl),
- mock_image_ctx.get_data_io_context(), 0, {});
+ mock_image_ctx, aio_comp_2, {{0, 1}}, ImageArea::DATA, std::move(bl),
+ 0, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_write_2.send();
ReadResult rr;
MockImageReadRequest mock_aio_image_read_1(
- mock_image_ctx, aio_comp_1, {{0, 1}}, std::move(rr),
+ mock_image_ctx, aio_comp_1, {{0, 1}}, ImageArea::DATA, std::move(rr),
mock_image_ctx.get_data_io_context(), 0, 0, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
expect_object_request_send(mock_image_ctx, 0);
MockImageReadRequest mock_aio_image_read_2(
- mock_image_ctx, aio_comp_2, {{0, 1}}, std::move(rr),
+ mock_image_ctx, aio_comp_2, {{0, 1}}, ImageArea::DATA, std::move(rr),
mock_image_ctx.get_data_io_context(), 0, 0, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
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}, {84, 100}},
- ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {});
+ mock_image_ctx, aio_comp, {{16, 63}, {84, 100}}, ImageArea::DATA,
+ ictx->discard_granularity_bytes, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_discard.send();
&aio_comp_ctx, ictx, AIO_TYPE_DISCARD);
MockImageDiscardRequest mock_aio_image_discard(
mock_image_ctx, aio_comp,
- {{ictx->layout.object_size - 1024, 1024}},
- ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {});
+ {{ictx->layout.object_size - 1024, 1024}}, ImageArea::DATA,
+ ictx->discard_granularity_bytes, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_discard.send();
MockImageDiscardRequest mock_aio_image_discard(
mock_image_ctx, aio_comp,
{{16, 63}, {96, 31}, {84, 100}, {ictx->layout.object_size - 33, 33}},
- 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();
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}, {84, 100}},
- ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {});
+ mock_image_ctx, aio_comp, {{16, 63}, {84, 100}}, ImageArea::DATA,
+ ictx->discard_granularity_bytes, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_discard.send();
AioCompletion *aio_comp = AioCompletion::create_and_start(
&aio_comp_ctx, ictx, AIO_TYPE_DISCARD);
MockImageDiscardRequest mock_aio_image_discard(
- mock_image_ctx, aio_comp, {{ictx->layout.object_size - 1024, 1024}},
- ictx->discard_granularity_bytes, mock_image_ctx.get_data_io_context(), {});
+ mock_image_ctx, aio_comp,
+ {{ictx->layout.object_size - 1024, 1024}}, ImageArea::DATA,
+ ictx->discard_granularity_bytes, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_discard.send();
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}}, 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();
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}}, 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();
MockImageDiscardRequest mock_aio_image_discard(
mock_image_ctx, aio_comp,
{{16, 63}, {96, 31}, {84, 100}, {ictx->layout.object_size - 33, 33}},
- 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();
bufferlist bl;
bl.append("1");
MockImageWriteRequest mock_aio_image_write(
- mock_image_ctx, aio_comp, {{0, 1}}, 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();
AioCompletion *aio_comp = AioCompletion::create_and_start(
&aio_comp_ctx, ictx, AIO_TYPE_DISCARD);
MockImageDiscardRequest mock_aio_image_discard(
- mock_image_ctx, aio_comp, {{0, 1}}, ictx->discard_granularity_bytes,
- mock_image_ctx.get_data_io_context(), {});
+ mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA,
+ ictx->discard_granularity_bytes, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_aio_image_discard.send();
bufferlist bl;
bl.append("1");
MockImageWriteSameRequest mock_aio_image_writesame(
- mock_image_ctx, aio_comp, {{0, 1}}, 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();
write_bl.append("1");
uint64_t mismatch_offset;
MockImageCompareAndWriteRequest mock_aio_image_write(
- mock_image_ctx, aio_comp, {{0, 1}}, std::move(cmp_bl), std::move(write_bl),
- &mismatch_offset, mock_image_ctx.get_data_io_context(), 0, {});
+ mock_image_ctx, aio_comp, {{0, 1}}, ImageArea::DATA,
+ 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();
AioCompletion *aio_comp = AioCompletion::create_and_start(
&aio_comp_ctx, ictx, AIO_TYPE_GENERIC);
MockImageListSnapsRequest mock_image_list_snaps_request(
- mock_image_ctx, aio_comp, {{0, 16384}, {16384, 16384}}, {0, CEPH_NOSNAP},
- 0, &snapshot_delta, {});
+ mock_image_ctx, aio_comp, {{0, 16384}, {16384, 16384}}, ImageArea::DATA,
+ {0, CEPH_NOSNAP}, 0, &snapshot_delta, {});
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
mock_image_list_snaps_request.send();