From 90881ff50213ec35f9d7dab2e75b4e99123edc47 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 19 Apr 2019 18:37:35 -0400 Subject: [PATCH] cls/rgw: expose cls_rgw_bucket_list_op for single shard Signed-off-by: Casey Bodley (cherry picked from commit cd1fc96c5ca5254eb8343509b11a59514d62e532) --- src/cls/rgw/cls_rgw_client.cc | 25 ++++++++++++++++++------- src/cls/rgw/cls_rgw_client.h | 7 +++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/cls/rgw/cls_rgw_client.cc b/src/cls/rgw/cls_rgw_client.cc index 1f25068f9f3cc..97426ed766174 100644 --- a/src/cls/rgw/cls_rgw_client.cc +++ b/src/cls/rgw/cls_rgw_client.cc @@ -209,12 +209,13 @@ void cls_rgw_bucket_complete_op(ObjectWriteOperation& o, RGWModifyOp op, string& o.exec(RGW_CLASS, RGW_BUCKET_COMPLETE_OP, in); } -static bool issue_bucket_list_op(librados::IoCtx& io_ctx, const string& oid, - const cls_rgw_obj_key& start_obj, - const string& filter_prefix, - uint32_t num_entries, bool list_versions, - BucketIndexAioManager *manager, - rgw_cls_list_ret *pdata) { +void cls_rgw_bucket_list_op(librados::ObjectReadOperation& op, + const cls_rgw_obj_key& start_obj, + const std::string& filter_prefix, + uint32_t num_entries, + bool list_versions, + rgw_cls_list_ret* result) +{ bufferlist in; rgw_cls_list_op call; call.start_obj = start_obj; @@ -223,8 +224,18 @@ static bool issue_bucket_list_op(librados::IoCtx& io_ctx, const string& oid, call.list_versions = list_versions; encode(call, in); + op.exec(RGW_CLASS, RGW_BUCKET_LIST, in, new ClsBucketIndexOpCtx(result, NULL)); +} + +static bool issue_bucket_list_op(librados::IoCtx& io_ctx, const string& oid, + const cls_rgw_obj_key& start_obj, + const string& filter_prefix, + uint32_t num_entries, bool list_versions, + BucketIndexAioManager *manager, + rgw_cls_list_ret *pdata) { librados::ObjectReadOperation op; - op.exec(RGW_CLASS, RGW_BUCKET_LIST, in, new ClsBucketIndexOpCtx(pdata, NULL)); + cls_rgw_bucket_list_op(op, start_obj, filter_prefix, + num_entries, list_versions, pdata); 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 3ac3ea4cf69a6..dcfab4121e705 100644 --- a/src/cls/rgw/cls_rgw_client.h +++ b/src/cls/rgw/cls_rgw_client.h @@ -422,6 +422,13 @@ public: start_obj(_start_obj), filter_prefix(_filter_prefix), num_entries(_num_entries), list_versions(_list_versions), result(list_results) {} }; +void cls_rgw_bucket_list_op(librados::ObjectReadOperation& op, + const cls_rgw_obj_key& start_obj, + const std::string& filter_prefix, + uint32_t num_entries, + bool list_versions, + rgw_cls_list_ret* result); + class CLSRGWIssueBILogList : public CLSRGWConcurrentIO { map& result; BucketIndexShardsManager& marker_mgr; -- 2.39.5