From a8f4ae481a6536dc5917c6e14d0185356329371d Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 6 Aug 2019 16:16:27 -0400 Subject: [PATCH] cls/rgw: expose cls_rgw_bilog_list/trim() for single shard Signed-off-by: Casey Bodley --- src/cls/rgw/cls_rgw_client.cc | 43 +++++++++++++++++++++++++---------- src/cls/rgw/cls_rgw_client.h | 8 +++++++ 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/cls/rgw/cls_rgw_client.cc b/src/cls/rgw/cls_rgw_client.cc index 97426ed7661..619fe5b5a79 100644 --- a/src/cls/rgw/cls_rgw_client.cc +++ b/src/cls/rgw/cls_rgw_client.cc @@ -474,17 +474,26 @@ int cls_rgw_clear_olh(IoCtx& io_ctx, librados::ObjectWriteOperation& op, string& return op_ret; } -static bool issue_bi_log_list_op(librados::IoCtx& io_ctx, const string& oid, int shard_id, - BucketIndexShardsManager& marker_mgr, uint32_t max, BucketIndexAioManager *manager, - cls_rgw_bi_log_list_ret *pdata) { - bufferlist in; +void cls_rgw_bilog_list(librados::ObjectReadOperation& op, + const std::string& marker, uint32_t max, + cls_rgw_bi_log_list_ret *pdata, int *ret) +{ cls_rgw_bi_log_list_op call; - call.marker = marker_mgr.get(shard_id, ""); + call.marker = marker; call.max = max; + + bufferlist in; encode(call, in); + op.exec(RGW_CLASS, RGW_BI_LOG_LIST, in, new ClsBucketIndexOpCtx(pdata, ret)); +} +static bool issue_bi_log_list_op(librados::IoCtx& io_ctx, const string& oid, int shard_id, + BucketIndexShardsManager& marker_mgr, uint32_t max, + BucketIndexAioManager *manager, + cls_rgw_bi_log_list_ret *pdata) +{ librados::ObjectReadOperation op; - op.exec(RGW_CLASS, RGW_BI_LOG_LIST, in, new ClsBucketIndexOpCtx(pdata, NULL)); + cls_rgw_bilog_list(op, marker_mgr.get(shard_id, ""), max, pdata, nullptr); return manager->aio_operate(io_ctx, oid, &op); } @@ -493,16 +502,26 @@ int CLSRGWIssueBILogList::issue_op(int shard_id, const string& oid) return issue_bi_log_list_op(io_ctx, oid, shard_id, marker_mgr, max, &manager, &result[shard_id]); } +void cls_rgw_bilog_trim(librados::ObjectWriteOperation& op, + const std::string& start_marker, + const std::string& end_marker) +{ + cls_rgw_bi_log_trim_op call; + call.start_marker = start_marker; + call.end_marker = end_marker; + + bufferlist in; + encode(call, in); + op.exec(RGW_CLASS, RGW_BI_LOG_TRIM, in); +} + static bool issue_bi_log_trim(librados::IoCtx& io_ctx, const string& oid, int shard_id, BucketIndexShardsManager& start_marker_mgr, BucketIndexShardsManager& end_marker_mgr, BucketIndexAioManager *manager) { - bufferlist in; cls_rgw_bi_log_trim_op call; - call.start_marker = start_marker_mgr.get(shard_id, ""); - call.end_marker = end_marker_mgr.get(shard_id, ""); - encode(call, in); - ObjectWriteOperation op; - op.exec(RGW_CLASS, RGW_BI_LOG_TRIM, in); + librados::ObjectWriteOperation op; + cls_rgw_bilog_trim(op, start_marker_mgr.get(shard_id, ""), + end_marker_mgr.get(shard_id, "")); return manager->aio_operate(io_ctx, oid, &op); } diff --git a/src/cls/rgw/cls_rgw_client.h b/src/cls/rgw/cls_rgw_client.h index b090fbd7478..a718c4216c7 100644 --- a/src/cls/rgw/cls_rgw_client.h +++ b/src/cls/rgw/cls_rgw_client.h @@ -437,6 +437,10 @@ void cls_rgw_bucket_list_op(librados::ObjectReadOperation& op, bool list_versions, rgw_cls_list_ret* result); +void cls_rgw_bilog_list(librados::ObjectReadOperation& op, + const std::string& marker, uint32_t max, + cls_rgw_bi_log_list_ret *pdata, int *ret = nullptr); + class CLSRGWIssueBILogList : public CLSRGWConcurrentIO { map& result; BucketIndexShardsManager& marker_mgr; @@ -451,6 +455,10 @@ public: marker_mgr(_marker_mgr), max(_max) {} }; +void cls_rgw_bilog_trim(librados::ObjectWriteOperation& op, + const std::string& start_marker, + const std::string& end_marker); + class CLSRGWIssueBILogTrim : public CLSRGWConcurrentIO { BucketIndexShardsManager& start_marker_mgr; BucketIndexShardsManager& end_marker_mgr; -- 2.39.5