From f3e34f00c6626758daede24fc899e9d865531b70 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Thu, 1 Feb 2018 18:10:39 +0200 Subject: [PATCH] librados: yet another aio_operate method (allow to specify both flags and snap context) Signed-off-by: Mykola Golub --- src/include/rados/librados.hpp | 4 ++++ src/librados/librados.cc | 15 +++++++++++++++ src/test/librados_test_stub/LibradosTestStub.cc | 13 ++++++++++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp index 68a5e728c8221..790204d511944 100644 --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@ -1110,6 +1110,10 @@ namespace librados ObjectWriteOperation *op, snap_t seq, std::vector& snaps, const blkin_trace_info *trace_info); + int aio_operate(const std::string& oid, AioCompletion *c, + ObjectWriteOperation *op, snap_t seq, + std::vector& snaps, int flags, + const blkin_trace_info *trace_info); int aio_operate(const std::string& oid, AioCompletion *c, ObjectReadOperation *op, bufferlist *pbl); diff --git a/src/librados/librados.cc b/src/librados/librados.cc index a5d00b942b05a..1f1f52f830821 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -1563,6 +1563,21 @@ int librados::IoCtx::aio_operate(const std::string& oid, AioCompletion *c, snapc, 0, trace_info); } +int librados::IoCtx::aio_operate(const std::string& oid, AioCompletion *c, + librados::ObjectWriteOperation *o, + snap_t snap_seq, std::vector& snaps, int flags, + const blkin_trace_info *trace_info) +{ + object_t obj(oid); + vector snv; + snv.resize(snaps.size()); + for (size_t i = 0; i < snaps.size(); ++i) + snv[i] = snaps[i]; + SnapContext snapc(snap_seq, snv); + return io_ctx_impl->aio_operate(obj, &o->impl->o, c->pc, snapc, + translate_flags(flags), trace_info); +} + int librados::IoCtx::aio_operate(const std::string& oid, AioCompletion *c, librados::ObjectReadOperation *o, bufferlist *pbl) diff --git a/src/test/librados_test_stub/LibradosTestStub.cc b/src/test/librados_test_stub/LibradosTestStub.cc index f4c7f8bef48f2..55a02fd36970a 100644 --- a/src/test/librados_test_stub/LibradosTestStub.cc +++ b/src/test/librados_test_stub/LibradosTestStub.cc @@ -425,7 +425,8 @@ int IoCtx::aio_operate(const std::string& oid, AioCompletion *c, int IoCtx::aio_operate(const std::string& oid, AioCompletion *c, ObjectWriteOperation *op, snap_t seq, - std::vector& snaps) { + std::vector& snaps, int flags, + const blkin_trace_info *trace_info) { TestIoCtxImpl *ctx = reinterpret_cast(io_ctx_impl); TestObjectOperationImpl *ops = reinterpret_cast(op->impl); @@ -435,14 +436,20 @@ int IoCtx::aio_operate(const std::string& oid, AioCompletion *c, snv[i] = snaps[i]; SnapContext snapc(seq, snv); - return ctx->aio_operate(oid, *ops, c->pc, &snapc, 0); + return ctx->aio_operate(oid, *ops, c->pc, &snapc, flags); +} + +int IoCtx::aio_operate(const std::string& oid, AioCompletion *c, + ObjectWriteOperation *op, snap_t seq, + std::vector& snaps) { + return aio_operate(oid, c, op, seq, snaps, 0, nullptr); } int IoCtx::aio_operate(const std::string& oid, AioCompletion *c, ObjectWriteOperation *op, snap_t seq, std::vector& snaps, const blkin_trace_info *trace_info) { - return aio_operate(oid, c, op, seq, snaps); + return aio_operate(oid, c, op, seq, snaps, 0, trace_info); } int IoCtx::aio_remove(const std::string& oid, AioCompletion *c) { -- 2.39.5