]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: yet another aio_operate method 20343/head
authorMykola Golub <mgolub@suse.com>
Thu, 1 Feb 2018 16:10:39 +0000 (18:10 +0200)
committerMykola Golub <mgolub@suse.com>
Tue, 6 Feb 2018 17:45:57 +0000 (19:45 +0200)
(allow to specify both flags and snap context)

Signed-off-by: Mykola Golub <mgolub@suse.com>
src/include/rados/librados.hpp
src/librados/librados.cc
src/test/librados_test_stub/LibradosTestStub.cc

index 68a5e728c82216799461932a366a235b6f4291e4..790204d5119447f32a86877c2a6377fef2161bb9 100644 (file)
@@ -1110,6 +1110,10 @@ namespace librados
         ObjectWriteOperation *op, snap_t seq,
         std::vector<snap_t>& snaps,
         const blkin_trace_info *trace_info);
+    int aio_operate(const std::string& oid, AioCompletion *c,
+        ObjectWriteOperation *op, snap_t seq,
+        std::vector<snap_t>& snaps, int flags,
+        const blkin_trace_info *trace_info);
     int aio_operate(const std::string& oid, AioCompletion *c,
                    ObjectReadOperation *op, bufferlist *pbl);
 
index a5d00b942b05af15be843c2794498ad7b048a6e3..1f1f52f830821866b7566cf6aa4b7393116ccb43 100644 (file)
@@ -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<snap_t>& snaps, int flags,
+         const blkin_trace_info *trace_info)
+{
+  object_t obj(oid);
+  vector<snapid_t> 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)
index f4c7f8bef48f208e46a392f99b825ad9b7203527..55a02fd36970a93e4d3099ad3906a96605786621 100644 (file)
@@ -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<snap_t>& snaps) {
+                       std::vector<snap_t>& snaps, int flags,
+                       const blkin_trace_info *trace_info) {
   TestIoCtxImpl *ctx = reinterpret_cast<TestIoCtxImpl*>(io_ctx_impl);
   TestObjectOperationImpl *ops = reinterpret_cast<TestObjectOperationImpl*>(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<snap_t>& 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<snap_t>& 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) {