]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: add new read/write api for librbd C interface which handle op
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 11 Dec 2014 08:56:53 +0000 (16:56 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Fri, 12 Dec 2014 06:23:35 +0000 (14:23 +0800)
flags.

Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/include/rbd/librbd.h
src/librbd/librbd.cc
src/tracing/librbd.tp

index de8d5662f52f51fe26a044b0177f622273c5d92b..a0ddfd08e077389f2aeefb82e393b349fe8988dd 100644 (file)
@@ -334,7 +334,11 @@ typedef void *rbd_completion_t;
 typedef void (*rbd_callback_t)(rbd_completion_t cb, void *arg);
 CEPH_RBD_API ssize_t rbd_read(rbd_image_t image, uint64_t ofs, size_t len,
                               char *buf);
-
+/*
+ * @param op_flags: see librados.h constants beginning with LIBRADOS_OP_FLAG
+ */
+CEPH_RBD_API ssize_t rbd_read2(rbd_image_t image, uint64_t ofs, size_t len,
+                               char *buf, int op_flags);
 /* DEPRECATED; use rbd_read_iterate2 */
 CEPH_RBD_API int64_t rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
                                      int (*cb)(uint64_t, size_t, const char *, void *),
@@ -383,11 +387,27 @@ CEPH_RBD_API int rbd_diff_iterate(rbd_image_t image,
                                   void *arg);
 CEPH_RBD_API ssize_t rbd_write(rbd_image_t image, uint64_t ofs, size_t len,
                                const char *buf);
+/*
+ * @param op_flags: see librados.h constants beginning with LIBRADOS_OP_FLAG
+ */
+CEPH_RBD_API ssize_t rbd_write2(rbd_image_t image, uint64_t ofs, size_t len,
+                                const char *buf, int op_flags);
 CEPH_RBD_API int rbd_discard(rbd_image_t image, uint64_t ofs, uint64_t len);
 CEPH_RBD_API int rbd_aio_write(rbd_image_t image, uint64_t off, size_t len,
                                const char *buf, rbd_completion_t c);
+
+/*
+ * @param op_flags: see librados.h constants beginning with LIBRADOS_OP_FLAG
+ */
+CEPH_RBD_API int rbd_aio_write2(rbd_image_t image, uint64_t off, size_t len,
+                                const char *buf, rbd_completion_t c, int op_flags);
 CEPH_RBD_API int rbd_aio_read(rbd_image_t image, uint64_t off, size_t len,
                               char *buf, rbd_completion_t c);
+/*
+ * @param op_flags: see librados.h constants beginning with LIBRADOS_OP_FLAG
+ */
+CEPH_RBD_API int rbd_aio_read2(rbd_image_t image, uint64_t off, size_t len,
+                               char *buf, rbd_completion_t c, int op_flags);
 CEPH_RBD_API int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len,
                                  rbd_completion_t c);
 CEPH_RBD_API int rbd_aio_create_completion(void *cb_arg,
index 58870f1f1141af7d2772f307d67310cbee6bbd23..0827caa374423555ed243facc552846b63d39351 100644 (file)
@@ -1421,6 +1421,18 @@ extern "C" ssize_t rbd_read(rbd_image_t image, uint64_t ofs, size_t len,
   return r;
 }
 
+extern "C" ssize_t rbd_read2(rbd_image_t image, uint64_t ofs, size_t len,
+                             char *buf, int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  tracepoint(librbd, read2_enter, ictx, ictx->name.c_str(),
+             ictx->snap_name.c_str(), ictx->read_only, ofs, len, op_flags);
+  int r = librbd::read(ictx, ofs, len, buf, op_flags);
+  tracepoint(librbd, read_exit, r);
+  return r;
+}
+
+
 extern "C" int64_t rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len,
                                    int (*cb)(uint64_t, size_t, const char *, void *),
                                    void *arg)
@@ -1468,6 +1480,18 @@ extern "C" ssize_t rbd_write(rbd_image_t image, uint64_t ofs, size_t len,
   return r;
 }
 
+extern "C" ssize_t rbd_write2(rbd_image_t image, uint64_t ofs, size_t len,
+                             const char *buf, int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  tracepoint(librbd, write2_enter, ictx, ictx->name.c_str(),
+             ictx->snap_name.c_str(), ictx->read_only, ofs, len, buf, op_flags);
+  int r = librbd::write(ictx, ofs, len, buf, op_flags);
+  tracepoint(librbd, write_exit, r);
+  return r;
+}
+
+
 extern "C" int rbd_discard(rbd_image_t image, uint64_t ofs, uint64_t len)
 {
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
@@ -1499,6 +1523,20 @@ extern "C" int rbd_aio_write(rbd_image_t image, uint64_t off, size_t len,
   return r;
 }
 
+extern "C" int rbd_aio_write2(rbd_image_t image, uint64_t off, size_t len,
+                             const char *buf, rbd_completion_t c, int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
+  tracepoint(librbd, aio_write2_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(),
+             ictx->read_only, off, len, buf, comp->pc, op_flags);
+  int r = librbd::aio_write(ictx, off, len, buf,
+                          (librbd::AioCompletion *)comp->pc, op_flags);
+  tracepoint(librbd, aio_write_exit, r);
+  return r;
+}
+
+
 extern "C" int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len,
                               rbd_completion_t c)
 {
@@ -1522,6 +1560,19 @@ extern "C" int rbd_aio_read(rbd_image_t image, uint64_t off, size_t len,
   return r;
 }
 
+extern "C" int rbd_aio_read2(rbd_image_t image, uint64_t off, size_t len,
+                             char *buf, rbd_completion_t c, int op_flags)
+{
+  librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
+  librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c;
+  tracepoint(librbd, aio_read2_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(),
+             ictx->read_only, off, len, buf, comp->pc, op_flags);
+  int r = librbd::aio_read(ictx, off, len, buf, NULL,
+                         (librbd::AioCompletion *)comp->pc, op_flags);
+  tracepoint(librbd, aio_read_exit, r);
+  return r;
+}
+
 extern "C" int rbd_flush(rbd_image_t image)
 {
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
index 10360d96fd68557a635fc71d0f6cf33f0c4120ab..5183710e870f2537f24d36ad98a220a9ff854664 100644 (file)
@@ -19,6 +19,25 @@ TRACEPOINT_EVENT(librbd, read_enter,
     )
 )
 
+TRACEPOINT_EVENT(librbd, read2_enter,
+    TP_ARGS(
+        void*, imagectx,
+        const char*, name,
+        const char*, snap_name,
+        char, read_only,
+        uint64_t, offset,
+        uint64_t, length,
+       int, op_flags),
+    TP_FIELDS(
+        ctf_integer_hex(void*, imagectx, imagectx)
+        ctf_string(name, name)
+        ctf_string(snap_name, snap_name)
+        ctf_integer(char, read_only, read_only)
+        ctf_integer(uint64_t, offset, offset)
+        ctf_integer(uint64_t, length, length)
+        ctf_integer(int, op_flags, op_flags)
+    )
+)
 TRACEPOINT_EVENT(librbd, read_exit,
     TP_ARGS(
         ssize_t, retval),
@@ -98,6 +117,28 @@ TRACEPOINT_EVENT(librbd, write_enter,
     )
 )
 
+TRACEPOINT_EVENT(librbd, write2_enter,
+    TP_ARGS(
+        void*, imagectx,
+        const char*, name,
+        const char*, snap_name,
+        char, read_only,
+        uint64_t, off,
+        size_t, len,
+        const char*, buf,
+       int, op_flags),
+    TP_FIELDS(
+        ctf_integer_hex(void*, imagectx, imagectx)
+        ctf_string(name, name)
+        ctf_string(snap_name, snap_name)
+        ctf_integer(char, read_only, read_only)
+        ctf_integer(uint64_t, off, off)
+        ceph_ctf_sequence(unsigned char, buf, buf, size_t, len)
+        ctf_integer(int, op_flags, op_flags)
+    )
+)
+
+
 TRACEPOINT_EVENT(librbd, write_exit,
     TP_ARGS(
         ssize_t, retval),
@@ -303,6 +344,29 @@ TRACEPOINT_EVENT(librbd, aio_write_enter,
     )
 )
 
+TRACEPOINT_EVENT(librbd, aio_write2_enter,
+    TP_ARGS(
+        void*, imagectx,
+        const char*, name,
+        const char*, snap_name,
+        char, read_only,
+        uint64_t, off,
+        size_t, len,
+        const char*, buf,
+        const void*, completion,
+       int, op_flags),
+    TP_FIELDS(
+        ctf_integer_hex(void*, imagectx, imagectx)
+        ctf_string(name, name)
+        ctf_string(snap_name, snap_name)
+        ctf_integer(char, read_only, read_only)
+        ctf_integer(uint64_t, off, off)
+        ctf_integer(size_t, len, len)
+        ceph_ctf_sequence(unsigned char, buf, buf, size_t, len)
+        ctf_integer_hex(const void*, completion, completion)
+        ctf_integer(int, op_flags, op_flags)
+    )
+)
 TRACEPOINT_EVENT(librbd, aio_write_exit,
     TP_ARGS(
         int, retval),
@@ -332,6 +396,30 @@ TRACEPOINT_EVENT(librbd, aio_read_enter,
     )
 )
 
+TRACEPOINT_EVENT(librbd, aio_read2_enter,
+    TP_ARGS(
+        void*, imagectx,
+        const char*, name,
+        const char*, snap_name,
+        char, read_only,
+        uint64_t, offset,
+        uint64_t, length,
+        const char*, buf,
+        const void*, completion,
+       int, op_flags),
+    TP_FIELDS(
+        ctf_integer_hex(void*, imagectx, imagectx)
+        ctf_string(name, name)
+        ctf_string(snap_name, snap_name)
+        ctf_integer(char, read_only, read_only)
+        ctf_integer(uint64_t, offset, offset)
+        ctf_integer(uint64_t, length, length)
+        ctf_integer_hex(const void*, completion, completion)
+        ctf_integer(int, op_flags, op_flags)
+    )
+)
+
+
 TRACEPOINT_EVENT(librbd, aio_read_exit,
     TP_ARGS(
         int, retval),