From e8c320f5d9660ea0bb79a3dd5c2d39f971b89db5 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Sat, 20 May 2017 23:01:23 -0400 Subject: [PATCH] librados: add rados_write_op_omap_rm_range2() Signed-off-by: Casey Bodley --- src/include/rados/librados.h | 17 +++++++++++++++++ src/librados/librados_c.cc | 14 ++++++++++++++ src/tracing/librados.tp | 17 +++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/src/include/rados/librados.h b/src/include/rados/librados.h index d40666e45b5..5b1e6c7dccc 100644 --- a/src/include/rados/librados.h +++ b/src/include/rados/librados.h @@ -3043,6 +3043,23 @@ CEPH_RADOS_API void rados_write_op_omap_rm_keys2(rados_write_op_t write_op, const size_t* key_lens, size_t keys_len); + +/** + * Remove key/value pairs from an object whose keys are in the range + * [key_begin, key_end) + * + * @param write_op operation to add this action to + * @param key_begin the lower bound of the key range to remove + * @param key_begin_len length of key_begin + * @param key_end the upper bound of the key range to remove + * @param key_end_len length of key_end + */ +CEPH_RADOS_API void rados_write_op_omap_rm_range2(rados_write_op_t write_op, + const char *key_begin, + size_t key_begin_len, + const char *key_end, + size_t key_end_len); + /** * Remove all key/value pairs from an object * diff --git a/src/librados/librados_c.cc b/src/librados/librados_c.cc index ac913d1ebdf..117653b070a 100644 --- a/src/librados/librados_c.cc +++ b/src/librados/librados_c.cc @@ -3362,6 +3362,20 @@ extern "C" void _rados_write_op_omap_rm_keys2(rados_write_op_t write_op, } LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_rm_keys2); +extern "C" void _rados_write_op_omap_rm_range2(rados_write_op_t write_op, + const char *key_begin, + size_t key_begin_len, + const char *key_end, + size_t key_end_len) +{ + tracepoint(librados, rados_write_op_omap_rm_range_enter, + write_op, key_begin, key_end); + ((::ObjectOperation *)write_op)->omap_rm_range({key_begin, key_begin_len}, + {key_end, key_end_len}); + tracepoint(librados, rados_write_op_omap_rm_range_exit); +} +LIBRADOS_C_API_BASE_DEFAULT(rados_write_op_omap_rm_range2); + extern "C" void _rados_write_op_omap_clear(rados_write_op_t write_op) { tracepoint(librados, rados_write_op_omap_clear_enter, write_op); diff --git a/src/tracing/librados.tp b/src/tracing/librados.tp index 4921258dfa6..4b2c55e06f7 100644 --- a/src/tracing/librados.tp +++ b/src/tracing/librados.tp @@ -3347,6 +3347,23 @@ TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_keys_exit, TP_FIELDS() ) +TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_range_enter, + TP_ARGS( + rados_write_op_t, op, + const char*, key_begin, + const char*, key_end), + TP_FIELDS( + ctf_integer_hex(rados_write_op_t, op, op) + ceph_ctf_string(key_begin, key_begin) + ceph_ctf_string(key_end, key_end) + ) +) + +TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_range_exit, + TP_ARGS(), + TP_FIELDS() +) + TRACEPOINT_EVENT(librados, rados_write_op_omap_clear_enter, TP_ARGS( rados_write_op_t, op), -- 2.39.5