flags.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
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 *),
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,
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)
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;
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)
{
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;
)
)
+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),
)
)
+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),
)
)
+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),
)
)
+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),