diff options
author | Adam C. Emerson <aemerson@redhat.com> | 2022-12-02 06:26:00 +0100 |
---|---|---|
committer | Casey Bodley <cbodley@redhat.com> | 2023-11-29 19:15:25 +0100 |
commit | ac27d7a82492c045eff4d2107865d29924147247 (patch) | |
tree | 406ba4053afb0e06cf887662451d3ff691df823f | |
parent | rgw: Distentangle `rgw_rados_ref` from `RGWSI_RADOS` (diff) | |
download | ceph-ac27d7a82492c045eff4d2107865d29924147247.tar.xz ceph-ac27d7a82492c045eff4d2107865d29924147247.zip |
rgw: Remove RGWSI_RADOS from RGWSI_BI_RADOS
Simply use the RADOS handle and `rgw_rados_ref` directly.
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
-rw-r--r-- | src/rgw/driver/rados/rgw_cr_rados.cc | 11 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_cr_rados.h | 4 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_rados.cc | 103 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_rados.h | 4 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_service.cc | 10 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_service.h | 19 | ||||
-rw-r--r-- | src/rgw/driver/rados/rgw_tools.h | 65 | ||||
-rw-r--r-- | src/rgw/rgw_sal.cc | 9 | ||||
-rw-r--r-- | src/rgw/services/svc_bi_rados.cc | 66 | ||||
-rw-r--r-- | src/rgw/services/svc_bi_rados.h | 23 | ||||
-rw-r--r-- | src/rgw/services/svc_bilog_rados.cc | 18 |
11 files changed, 181 insertions, 151 deletions
diff --git a/src/rgw/driver/rados/rgw_cr_rados.cc b/src/rgw/driver/rados/rgw_cr_rados.cc index d73827bea14..cacba3cf44b 100644 --- a/src/rgw/driver/rados/rgw_cr_rados.cc +++ b/src/rgw/driver/rados/rgw_cr_rados.cc @@ -497,6 +497,17 @@ RGWRadosRemoveOidCR::RGWRadosRemoveOidCR(rgw::sal::RadosStore* store, set_description() << "remove dest=" << oid; } +RGWRadosRemoveOidCR::RGWRadosRemoveOidCR(rgw::sal::RadosStore* store, + rgw_rados_ref&& obj, + RGWObjVersionTracker* objv_tracker) + : RGWSimpleCoroutine(store->ctx()), + ioctx(std::move(obj.ioctx)), + oid(std::move(obj.obj.oid)), + objv_tracker(objv_tracker) +{ + set_description() << "remove dest=" << oid; +} + int RGWRadosRemoveOidCR::send_request(const DoutPrefixProvider *dpp) { librados::ObjectWriteOperation op; diff --git a/src/rgw/driver/rados/rgw_cr_rados.h b/src/rgw/driver/rados/rgw_cr_rados.h index b9c45f30cf6..0afb74d93a9 100644 --- a/src/rgw/driver/rados/rgw_cr_rados.h +++ b/src/rgw/driver/rados/rgw_cr_rados.h @@ -760,6 +760,10 @@ public: RGWSI_RADOS::Obj&& obj, RGWObjVersionTracker* objv_tracker = nullptr); + RGWRadosRemoveOidCR(rgw::sal::RadosStore* store, + rgw_rados_ref&& obj, + RGWObjVersionTracker* objv_tracker = nullptr); + int send_request(const DoutPrefixProvider *dpp) override; int request_complete() override; }; diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc index d12d479be26..9cf0831ecaa 100644 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@ -1363,10 +1363,11 @@ int RGWRados::init_complete(const DoutPrefixProvider *dpp, optional_yield y) int RGWRados::init_svc(bool raw, const DoutPrefixProvider *dpp) { if (raw) { - return svc.init_raw(cct, use_cache, null_yield, dpp); + return svc.init_raw(cct, use_cache, get_rados_handle(), null_yield, dpp); } - return svc.init(cct, use_cache, run_sync_thread, null_yield, dpp); + return svc.init(cct, use_cache, run_sync_thread, get_rados_handle(), + null_yield, dpp); } int RGWRados::init_ctl(const DoutPrefixProvider *dpp) @@ -1380,7 +1381,13 @@ int RGWRados::init_ctl(const DoutPrefixProvider *dpp) */ int RGWRados::init_begin(const DoutPrefixProvider *dpp) { - int ret = init_svc(false, dpp); + int ret = init_rados(); + if (ret < 0) { + ldpp_dout(dpp, 0) << "ERROR: failed to init rados (ret=" << cpp_strerror(-ret) << ")" << dendl; + return ret; + } + + ret = init_svc(false, dpp); if (ret < 0) { ldpp_dout(dpp, 0) << "ERROR: failed to init services (ret=" << cpp_strerror(-ret) << ")" << dendl; return ret; @@ -1394,7 +1401,7 @@ int RGWRados::init_begin(const DoutPrefixProvider *dpp) host_id = svc.zone_utils->gen_host_id(); - return init_rados(); + return 0; } /** @@ -2730,7 +2737,7 @@ int RGWRados::BucketShard::init(const rgw_bucket& _bucket, ldpp_dout(dpp, 0) << "ERROR: open_bucket_index_shard() returned ret=" << ret << dendl; return ret; } - ldpp_dout(dpp, 20) << " bucket index object: " << bucket_obj.get_raw_obj() << dendl; + ldpp_dout(dpp, 20) << " bucket index object: " << bucket_obj << dendl; return 0; } @@ -5060,7 +5067,7 @@ int RGWRados::check_bucket_empty(const DoutPrefixProvider *dpp, RGWBucketInfo& b int RGWRados::delete_bucket(RGWBucketInfo& bucket_info, RGWObjVersionTracker& objv_tracker, optional_yield y, const DoutPrefixProvider *dpp, bool check_empty) { const rgw_bucket& bucket = bucket_info.bucket; - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, std::nullopt, bucket_info.layout.current_index, &index_pool, &bucket_objs, nullptr); if (r < 0) @@ -5115,7 +5122,7 @@ int RGWRados::delete_bucket(RGWBucketInfo& bucket_info, RGWObjVersionTracker& ob } /* remove bucket index objects asynchronously by best effort */ - (void) CLSRGWIssueBucketIndexClean(index_pool.ioctx(), + (void) CLSRGWIssueBucketIndexClean(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } @@ -5303,7 +5310,7 @@ int RGWRados::bucket_check_index(const DoutPrefixProvider *dpp, RGWBucketInfo& b map<RGWObjCategory, RGWStorageStats> *existing_stats, map<RGWObjCategory, RGWStorageStats> *calculated_stats) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; // key - bucket index object id // value - bucket index check OP returned result with the given bucket index object (shard) @@ -5320,7 +5327,7 @@ int RGWRados::bucket_check_index(const DoutPrefixProvider *dpp, RGWBucketInfo& b bucket_objs_ret.emplace(iter.first, rgw_cls_check_index_ret()); } - ret = CLSRGWIssueBucketCheck(index_pool.ioctx(), oids, bucket_objs_ret, cct->_conf->rgw_bucket_index_max_aio)(); + ret = CLSRGWIssueBucketCheck(index_pool, oids, bucket_objs_ret, cct->_conf->rgw_bucket_index_max_aio)(); if (ret < 0) { return ret; } @@ -5336,7 +5343,7 @@ int RGWRados::bucket_check_index(const DoutPrefixProvider *dpp, RGWBucketInfo& b int RGWRados::bucket_rebuild_index(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, std::nullopt, bucket_info.layout.current_index, &index_pool, &bucket_objs, nullptr); @@ -5344,7 +5351,7 @@ int RGWRados::bucket_rebuild_index(const DoutPrefixProvider *dpp, RGWBucketInfo& return r; } - return CLSRGWIssueBucketRebuild(index_pool.ioctx(), bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); + return CLSRGWIssueBucketRebuild(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } static int resync_encrypted_multipart(const DoutPrefixProvider* dpp, @@ -5483,7 +5490,7 @@ int RGWRados::bucket_resync_encrypted_multipart(const DoutPrefixProvider* dpp, int RGWRados::bucket_set_reshard(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const cls_rgw_bucket_instance_entry& entry) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, std::nullopt, bucket_info.layout.current_index, &index_pool, &bucket_objs, nullptr); @@ -5494,7 +5501,7 @@ int RGWRados::bucket_set_reshard(const DoutPrefixProvider *dpp, const RGWBucketI return r; } - r = CLSRGWIssueSetBucketResharding(index_pool.ioctx(), bucket_objs, entry, cct->_conf->rgw_bucket_index_max_aio)(); + r = CLSRGWIssueSetBucketResharding(index_pool, bucket_objs, entry, cct->_conf->rgw_bucket_index_max_aio)(); if (r < 0) { ldpp_dout(dpp, 0) << "ERROR: " << __func__ << ": unable to issue set bucket resharding, r=" << r << " (" << @@ -7544,8 +7551,8 @@ int RGWRados::block_while_resharding(RGWRados::BucketShard *bs, constexpr int num_retries = 10; for (int i = 1; i <= num_retries; i++) { // nb: 1-based for loop - auto& ref = bs->bucket_obj.get_ref(); - ret = cls_rgw_get_bucket_resharding(ref.pool.ioctx(), ref.obj.oid, &entry); + auto& ref = bs->bucket_obj; + ret = cls_rgw_get_bucket_resharding(ref.ioctx, ref.obj.oid, &entry); if (ret == -ENOENT) { ret = fetch_new_bucket_info("get_bucket_resharding_failed"); if (ret < 0) { @@ -7684,7 +7691,7 @@ int RGWRados::bucket_index_link_olh(const DoutPrefixProvider *dpp, RGWBucketInfo r = guard_reshard(dpp, &bs, obj_instance, bucket_info, [&](BucketShard *bs) -> int { cls_rgw_obj_key key(obj_instance.key.get_index_key_name(), obj_instance.key.instance); - auto& ref = bs->bucket_obj.get_ref(); + auto& ref = bs->bucket_obj; librados::ObjectWriteOperation op; op.assert_exists(); // bucket index shard must exist cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING); @@ -7692,7 +7699,7 @@ int RGWRados::bucket_index_link_olh(const DoutPrefixProvider *dpp, RGWBucketInfo delete_marker, op_tag, meta, olh_epoch, unmod_since, high_precision_time, svc.zone->need_to_log_data(), zones_trace); - return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, y); + return rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, &op, y); }, y); if (r < 0) { ldpp_dout(dpp, 20) << "rgw_rados_operate() after cls_rgw_bucket_link_olh() returned r=" << r << dendl; @@ -7735,13 +7742,13 @@ int RGWRados::bucket_index_unlink_instance(const DoutPrefixProvider *dpp, cls_rgw_obj_key key(obj_instance.key.get_index_key_name(), obj_instance.key.instance); r = guard_reshard(dpp, &bs, obj_instance, bucket_info, [&](BucketShard *bs) -> int { - auto& ref = bs->bucket_obj.get_ref(); + auto& ref = bs->bucket_obj; librados::ObjectWriteOperation op; op.assert_exists(); // bucket index shard must exist cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING); cls_rgw_bucket_unlink_instance(op, key, op_tag, olh_tag, olh_epoch, svc.zone->need_to_log_data(), zones_trace); - return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, y); + return rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, &op, y); }, y); if (r < 0) { ldpp_dout(dpp, 20) << "rgw_rados_operate() after cls_rgw_bucket_link_instance() returned r=" << r << dendl; @@ -7775,14 +7782,14 @@ int RGWRados::bucket_index_read_olh_log(const DoutPrefixProvider *dpp, cls_rgw_obj_key key(obj_instance.key.get_index_key_name(), string()); - auto& shard_ref = bs.bucket_obj.get_ref(); + auto& shard_ref = bs.bucket_obj; ObjectReadOperation op; rgw_cls_read_olh_log_ret log_ret; int op_ret = 0; - cls_rgw_get_olh_log(op, key, ver_marker, olh_tag, log_ret, op_ret); + cls_rgw_get_olh_log(op, key, ver_marker, olh_tag, log_ret, op_ret); bufferlist outbl; - r = rgw_rados_operate(dpp, shard_ref.pool.ioctx(), shard_ref.obj.oid, &op, &outbl, y); + r = rgw_rados_operate(dpp, shard_ref.ioctx, shard_ref.obj.oid, &op, &outbl, y); if (r < 0) { return r; } @@ -7910,10 +7917,10 @@ int RGWRados::bucket_index_clear_olh(const DoutPrefixProvider *dpp, [&](BucketShard *pbs) -> int { ObjectWriteOperation op; op.assert_exists(); // bucket index shard must exist - auto& ref = pbs->bucket_obj.get_ref(); + auto& ref = bs.bucket_obj; cls_rgw_guard_bucket_resharding(op, -ERR_BUSY_RESHARDING); cls_rgw_clear_olh(op, key, olh_tag); - return rgw_rados_operate(dpp, ref.pool.ioctx(), ref.obj.oid, &op, y); + return rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, &op, y); }, y); if (ret < 0) { ldpp_dout(dpp, 5) << "rgw_rados_operate() after cls_rgw_clear_olh() returned ret=" << ret << dendl; @@ -8977,21 +8984,21 @@ int RGWRados::bi_get(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_ cls_rgw_obj_key key(obj.key.get_index_key_name(), obj.key.instance); - auto& ref = bs.bucket_obj.get_ref(); - - return cls_rgw_bi_get(ref.pool.ioctx(), ref.obj.oid, index_type, key, entry); + auto& ref = bs.bucket_obj; + + return cls_rgw_bi_get(ref.ioctx, ref.obj.oid, index_type, key, entry); } void RGWRados::bi_put(ObjectWriteOperation& op, BucketShard& bs, rgw_cls_bi_entry& entry, optional_yield y) { - auto& ref = bs.bucket_obj.get_ref(); + auto& ref = bs.bucket_obj; cls_rgw_bi_put(op, ref.obj.oid, entry); } int RGWRados::bi_put(BucketShard& bs, rgw_cls_bi_entry& entry, optional_yield y) { - auto& ref = bs.bucket_obj.get_ref(); - int ret = cls_rgw_bi_put(ref.pool.ioctx(), ref.obj.oid, entry); + auto& ref = bs.bucket_obj; + int ret = cls_rgw_bi_put(ref.ioctx, ref.obj.oid, entry); if (ret < 0) return ret; @@ -9029,8 +9036,8 @@ int RGWRados::bi_list(const DoutPrefixProvider *dpp, rgw_bucket& bucket, return ret; } - auto& ref = bs.bucket_obj.get_ref(); - ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated); + auto& ref = bs.bucket_obj; + ret = cls_rgw_bi_list(ref.ioctx, ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated); if (ret == -ENOENT) { *is_truncated = false; } @@ -9043,8 +9050,8 @@ int RGWRados::bi_list(const DoutPrefixProvider *dpp, rgw_bucket& bucket, int RGWRados::bi_list(BucketShard& bs, const string& obj_name_filter, const string& marker, uint32_t max, list<rgw_cls_bi_entry> *entries, bool *is_truncated, optional_yield y) { - auto& ref = bs.bucket_obj.get_ref(); - int ret = cls_rgw_bi_list(ref.pool.ioctx(), ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated); + auto& ref = bs.bucket_obj; + int ret = cls_rgw_bi_list(ref.ioctx, ref.obj.oid, obj_name_filter, marker, max, entries, is_truncated); if (ret < 0) return ret; @@ -9069,8 +9076,8 @@ int RGWRados::bi_list(const DoutPrefixProvider *dpp, int RGWRados::bi_remove(const DoutPrefixProvider *dpp, BucketShard& bs) { - auto& ref = bs.bucket_obj.get_ref(); - int ret = ref.pool.ioctx().remove(ref.obj.oid); + auto& ref = bs.bucket_obj; + int ret = ref.ioctx.remove(ref.obj.oid); if (ret == -ENOENT) { ret = 0; } @@ -9234,13 +9241,13 @@ int RGWRados::cls_obj_complete_cancel(BucketShard& bs, string& tag, rgw_obj& obj int RGWRados::cls_obj_set_bucket_tag_timeout(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info, uint64_t timeout) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, std::nullopt, bucket_info.layout.current_index, &index_pool, &bucket_objs, nullptr); if (r < 0) return r; - return CLSRGWIssueSetTagTimeout(index_pool.ioctx(), bucket_objs, cct->_conf->rgw_bucket_index_max_aio, timeout)(); + return CLSRGWIssueSetTagTimeout(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio, timeout)(); } @@ -9320,7 +9327,7 @@ int RGWRados::cls_bucket_list_ordered(const DoutPrefixProvider *dpp, m.clear(); - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; // key - oid (for different shards if there is any) // value - list result for the corresponding oid (shard), it is filled by // the AIO callback @@ -9368,7 +9375,7 @@ int RGWRados::cls_bucket_list_ordered(const DoutPrefixProvider *dpp, " shard(s) for " << num_entries_per_shard << " entries to get " << num_entries << " total entries" << dendl; - auto& ioctx = index_pool.ioctx(); + auto& ioctx = index_pool; std::map<int, rgw_cls_list_ret> shard_list_results; cls_rgw_obj_key start_after_key(start_after.name, start_after.instance); r = CLSRGWIssueBucketList(ioctx, start_after_key, prefix, delimiter, @@ -9656,7 +9663,7 @@ int RGWRados::cls_bucket_list_unordered(const DoutPrefixProvider *dpp, static MultipartMetaFilter multipart_meta_filter; *is_truncated = false; - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; std::map<int, std::string> oids; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, shard_id, idx_layout, &index_pool, &oids, nullptr); @@ -9664,7 +9671,7 @@ int RGWRados::cls_bucket_list_unordered(const DoutPrefixProvider *dpp, return r; } - auto& ioctx = index_pool.ioctx(); + auto& ioctx = index_pool; const uint32_t num_shards = oids.size(); @@ -9925,7 +9932,7 @@ int RGWRados::remove_objs_from_index(const DoutPrefixProvider *dpp, } const uint32_t num_shards = current_index.layout.normal.num_shards; - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; std::map<int, std::string> index_oids; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, std::nullopt, bucket_info.layout.current_index, @@ -9968,7 +9975,7 @@ int RGWRados::remove_objs_from_index(const DoutPrefixProvider *dpp, ", shard=" << shard << ", oid=" << oid << ", num_keys=" << removals.second.size() << dendl_bitx; - r = index_pool.ioctx().omap_rm_keys(oid, removals.second); + r = index_pool.omap_rm_keys(oid, removals.second); if (r < 0) { ldout_bitx(bitx, dpp, 0) << "ERROR: " << __func__ << ": omap_rm_keys returned ret=" << r << @@ -10143,7 +10150,7 @@ int RGWRados::check_disk_state(const DoutPrefixProvider *dpp, int RGWRados::cls_bucket_head(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& idx_layout, int shard_id, vector<rgw_bucket_dir_header>& headers, map<int, string> *bucket_instance_ids) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> oids; map<int, struct rgw_cls_list_ret> list_results; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, shard_id, idx_layout, &index_pool, &oids, bucket_instance_ids); @@ -10153,7 +10160,7 @@ int RGWRados::cls_bucket_head(const DoutPrefixProvider *dpp, const RGWBucketInfo return r; } - r = CLSRGWIssueGetDirHeader(index_pool.ioctx(), oids, list_results, cct->_conf->rgw_bucket_index_max_aio)(); + r = CLSRGWIssueGetDirHeader(index_pool, oids, list_results, cct->_conf->rgw_bucket_index_max_aio)(); if (r < 0) { ldpp_dout(dpp, 20) << "cls_bucket_head: CLSRGWIssueGetDirHeader() returned " << r << dendl; @@ -10171,14 +10178,14 @@ int RGWRados::cls_bucket_head_async(const DoutPrefixProvider *dpp, const RGWBuck const rgw::bucket_index_layout_generation& idx_layout, int shard_id, boost::intrusive_ptr<RGWGetDirHeader_CB> cb, int *num_aio) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; int r = svc.bi_rados->open_bucket_index(dpp, bucket_info, shard_id, idx_layout, &index_pool, &bucket_objs, nullptr); if (r < 0) return r; for (auto& pair : bucket_objs) { - r = cls_rgw_get_dir_header_async(index_pool.ioctx(), pair.second, cb); + r = cls_rgw_get_dir_header_async(index_pool, pair.second, cb); if (r < 0) { return r; } diff --git a/src/rgw/driver/rados/rgw_rados.h b/src/rgw/driver/rados/rgw_rados.h index 938bc161a7e..97528735417 100644 --- a/src/rgw/driver/rados/rgw_rados.h +++ b/src/rgw/driver/rados/rgw_rados.h @@ -651,7 +651,7 @@ public: RGWRados *store; rgw_bucket bucket; int shard_id; - RGWSI_RADOS::Obj bucket_obj; + rgw_rados_ref bucket_obj; explicit BucketShard(RGWRados *_store) : store(_store), shard_id(-1) {} int init(const rgw_bucket& _bucket, const rgw_obj& obj, @@ -664,7 +664,7 @@ public: friend std::ostream& operator<<(std::ostream& out, const BucketShard& bs) { out << "BucketShard:{ bucket=" << bs.bucket << ", shard_id=" << bs.shard_id << - ", bucket_ojb=" << bs.bucket_obj << "}"; + ", bucket_obj=" << bs.bucket_obj << "}"; return out; } }; diff --git a/src/rgw/driver/rados/rgw_service.cc b/src/rgw/driver/rados/rgw_service.cc index 4fcb1ebdef7..8efc97b2e25 100644 --- a/src/rgw/driver/rados/rgw_service.cc +++ b/src/rgw/driver/rados/rgw_service.cc @@ -51,6 +51,7 @@ int RGWServices_Def::init(CephContext *cct, bool have_cache, bool raw, bool run_sync, + librados::Rados* radoshandle, optional_yield y, const DoutPrefixProvider *dpp) { @@ -85,7 +86,7 @@ int RGWServices_Def::init(CephContext *cct, vector<RGWSI_MetaBackend *> meta_bes{meta_be_sobj.get(), meta_be_otp.get()}; finisher->init(); - bi_rados->init(zone.get(), rados.get(), bilog_rados.get(), datalog_rados.get()); + bi_rados->init(zone.get(), radoshandle, bilog_rados.get(), datalog_rados.get()); bilog_rados->init(bi_rados.get()); bucket_sobj->init(zone.get(), sysobj.get(), sysobj_cache.get(), bi_rados.get(), meta.get(), meta_be_sobj.get(), @@ -305,12 +306,13 @@ void RGWServices_Def::shutdown() } - -int RGWServices::do_init(CephContext *_cct, bool have_cache, bool raw, bool run_sync, optional_yield y, const DoutPrefixProvider *dpp) +int RGWServices::do_init(CephContext *_cct, bool have_cache, bool raw, + bool run_sync, librados::Rados* radoshandle, + optional_yield y, const DoutPrefixProvider *dpp) { cct = _cct; - int r = _svc.init(cct, have_cache, raw, run_sync, y, dpp); + int r = _svc.init(cct, have_cache, raw, run_sync, radoshandle, y, dpp); if (r < 0) { return r; } diff --git a/src/rgw/driver/rados/rgw_service.h b/src/rgw/driver/rados/rgw_service.h index 4c0b8d8421f..46ee16417fe 100644 --- a/src/rgw/driver/rados/rgw_service.h +++ b/src/rgw/driver/rados/rgw_service.h @@ -108,7 +108,9 @@ struct RGWServices_Def RGWServices_Def(); ~RGWServices_Def(); - int init(CephContext *cct, bool have_cache, bool raw_storage, bool run_sync, optional_yield y, const DoutPrefixProvider *dpp); + int init(CephContext *cct, bool have_cache, bool raw_storage, bool run_sync, + librados::Rados* radoshandle, optional_yield y, + const DoutPrefixProvider *dpp); void shutdown(); }; @@ -148,14 +150,19 @@ struct RGWServices RGWSI_User *user{nullptr}; RGWSI_Role_RADOS *role{nullptr}; - int do_init(CephContext *cct, bool have_cache, bool raw_storage, bool run_sync, optional_yield y, const DoutPrefixProvider *dpp); + int do_init(CephContext *cct, bool have_cache, bool raw_storage, + bool run_sync, librados::Rados* radoshandle, optional_yield y, + const DoutPrefixProvider *dpp); - int init(CephContext *cct, bool have_cache, bool run_sync, optional_yield y, const DoutPrefixProvider *dpp) { - return do_init(cct, have_cache, false, run_sync, y, dpp); + int init(CephContext *cct, bool have_cache, bool run_sync, + librados::Rados* radoshandle, optional_yield y, + const DoutPrefixProvider *dpp) { + return do_init(cct, have_cache, false, run_sync, radoshandle, y, dpp); } - int init_raw(CephContext *cct, bool have_cache, optional_yield y, const DoutPrefixProvider *dpp) { - return do_init(cct, have_cache, true, false, y, dpp); + int init_raw(CephContext *cct, bool have_cache, librados::Rados* radoshandle, + optional_yield y, const DoutPrefixProvider *dpp) { + return do_init(cct, have_cache, true, false, radoshandle, y, dpp); } void shutdown() { _svc.shutdown(); diff --git a/src/rgw/driver/rados/rgw_tools.h b/src/rgw/driver/rados/rgw_tools.h index 32cc029d758..afc836a473a 100644 --- a/src/rgw/driver/rados/rgw_tools.h +++ b/src/rgw/driver/rados/rgw_tools.h @@ -21,13 +21,6 @@ class optional_yield; struct obj_version; -struct rgw_rados_ref { - librados::IoCtx ioctx; - rgw_raw_obj obj; -}; -int rgw_get_rados_ref(const DoutPrefixProvider* dpp, librados::Rados* rados, - rgw_raw_obj obj, rgw_rados_ref* ref); - int rgw_init_ioctx(const DoutPrefixProvider *dpp, librados::Rados *rados, const rgw_pool& pool, librados::IoCtx& ioctx, @@ -106,31 +99,47 @@ int rgw_rados_operate(const DoutPrefixProvider *dpp, librados::IoCtx& ioctx, con int rgw_rados_operate(const DoutPrefixProvider *dpp, librados::IoCtx& ioctx, const std::string& oid, librados::ObjectWriteOperation *op, optional_yield y, int flags = 0); -inline int rgw_rados_operate(const DoutPrefixProvider *dpp, - rgw_rados_ref& ref, - librados::ObjectReadOperation *op, bufferlist *pbl, - optional_yield y, int flags = 0) -{ - return rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, op, pbl, y, flags); -} - -inline int rgw_rados_operate(const DoutPrefixProvider *dpp, - rgw_rados_ref& ref, - librados::ObjectWriteOperation *op, - optional_yield y, int flags = 0) -{ - return rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, op, y, flags); -} - int rgw_rados_notify(const DoutPrefixProvider *dpp, librados::IoCtx& ioctx, const std::string& oid, bufferlist& bl, uint64_t timeout_ms, bufferlist* pbl, optional_yield y); -inline int rgw_rados_notify(const DoutPrefixProvider *dpp, rgw_rados_ref& ref, - bufferlist& bl, uint64_t timeout_ms, - bufferlist* pbl, optional_yield y) -{ - return rgw_rados_notify(dpp, ref.ioctx, ref.obj.oid, bl, timeout_ms, pbl, y); + +struct rgw_rados_ref { + librados::IoCtx ioctx; + rgw_raw_obj obj; + + + int operate(const DoutPrefixProvider *dpp, librados::ObjectReadOperation *op, + bufferlist *pbl, optional_yield y, int flags = 0) { + return rgw_rados_operate(dpp, ioctx, obj.oid, op, pbl, y, flags); + } + + int operate(const DoutPrefixProvider *dpp, librados::ObjectWriteOperation *op, + optional_yield y, int flags = 0) { + return rgw_rados_operate(dpp, ioctx, obj.oid, op, y, flags); + } + + int aio_operate(librados::AioCompletion *c, + librados::ObjectWriteOperation *op) { + return ioctx.aio_operate(obj.oid, c, op); + } + + int aio_operate(librados::AioCompletion *c, librados::ObjectReadOperation *op, + bufferlist *pbl) { + return ioctx.aio_operate(obj.oid, c, op, pbl); + } + + int notify(const DoutPrefixProvider *dpp, bufferlist& bl, uint64_t timeout_ms, + bufferlist* pbl, optional_yield y) { + return rgw_rados_notify(dpp, ioctx, obj.oid, bl, timeout_ms, pbl, y); + } +}; +inline std::ostream& operator <<(std::ostream& m, const rgw_rados_ref& ref) { + return m << ref.obj; } +int rgw_get_rados_ref(const DoutPrefixProvider* dpp, librados::Rados* rados, + rgw_raw_obj obj, rgw_rados_ref* ref); + + int rgw_tools_init(const DoutPrefixProvider *dpp, CephContext *cct); void rgw_tools_cleanup(); diff --git a/src/rgw/rgw_sal.cc b/src/rgw/rgw_sal.cc index 9aada70899f..6c0212dae81 100644 --- a/src/rgw/rgw_sal.cc +++ b/src/rgw/rgw_sal.cc @@ -270,17 +270,18 @@ rgw::sal::Driver* DriverManager::init_raw_storage_provider(const DoutPrefixProvi rados->set_context(cct); - int ret = rados->init_svc(true, dpp); - if (ret < 0) { - ldout(cct, 0) << "ERROR: failed to init services (ret=" << cpp_strerror(-ret) << ")" << dendl; + if (rados->init_rados() < 0) { delete driver; return nullptr; } - if (rados->init_rados() < 0) { + int ret = rados->init_svc(true, dpp); + if (ret < 0) { + ldout(cct, 0) << "ERROR: failed to init services (ret=" << cpp_strerror(-ret) << ")" << dendl; delete driver; return nullptr; } + if (driver->initialize(cct, dpp) < 0) { delete driver; return nullptr; diff --git a/src/rgw/services/svc_bi_rados.cc b/src/rgw/services/svc_bi_rados.cc index 6002b986f59..20c842c3805 100644 --- a/src/rgw/services/svc_bi_rados.cc +++ b/src/rgw/services/svc_bi_rados.cc @@ -22,29 +22,27 @@ RGWSI_BucketIndex_RADOS::RGWSI_BucketIndex_RADOS(CephContext *cct) : RGWSI_Bucke } void RGWSI_BucketIndex_RADOS::init(RGWSI_Zone *zone_svc, - RGWSI_RADOS *rados_svc, - RGWSI_BILog_RADOS *bilog_svc, - RGWDataChangesLog *datalog_rados_svc) + librados::Rados* rados_, + RGWSI_BILog_RADOS *bilog_svc, + RGWDataChangesLog *datalog_rados_svc) { svc.zone = zone_svc; - svc.rados = rados_svc; + rados = rados_; svc.bilog = bilog_svc; svc.datalog_rados = datalog_rados_svc; } int RGWSI_BucketIndex_RADOS::open_pool(const DoutPrefixProvider *dpp, const rgw_pool& pool, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, bool mostly_omap) { - *index_pool = svc.rados->pool(pool); - return index_pool->open(dpp, RGWSI_RADOS::OpenParams() - .set_mostly_omap(mostly_omap)); + return rgw_init_ioctx(dpp, rados, pool, *index_pool, true, mostly_omap); } int RGWSI_BucketIndex_RADOS::open_bucket_index_pool(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool) + librados::IoCtx* index_pool) { const rgw_pool& explicit_pool = bucket_info.bucket.explicit_placement.index_pool; @@ -74,7 +72,7 @@ int RGWSI_BucketIndex_RADOS::open_bucket_index_pool(const DoutPrefixProvider *dp int RGWSI_BucketIndex_RADOS::open_bucket_index_base(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, string *bucket_oid_base) { const rgw_bucket& bucket = bucket_info.bucket; @@ -96,7 +94,7 @@ int RGWSI_BucketIndex_RADOS::open_bucket_index_base(const DoutPrefixProvider *dp int RGWSI_BucketIndex_RADOS::open_bucket_index(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, string *bucket_oid) { const rgw_bucket& bucket = bucket_info.bucket; @@ -194,7 +192,7 @@ int RGWSI_BucketIndex_RADOS::open_bucket_index(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, std::optional<int> _shard_id, const rgw::bucket_index_layout_generation& idx_layout, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, map<int, string> *bucket_objs, map<int, string> *bucket_instance_ids) { @@ -277,32 +275,27 @@ int RGWSI_BucketIndex_RADOS::get_bucket_index_object( int RGWSI_BucketIndex_RADOS::open_bucket_index_shard(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const string& obj_key, - RGWSI_RADOS::Obj *bucket_obj, + rgw_rados_ref* bucket_obj, int *shard_id) { string bucket_oid_base; - RGWSI_RADOS::Pool pool; - - int ret = open_bucket_index_base(dpp, bucket_info, &pool, &bucket_oid_base); + int ret = open_bucket_index_base(dpp, bucket_info, &bucket_obj->ioctx, &bucket_oid_base); if (ret < 0) { ldpp_dout(dpp, 20) << __func__ << ": open_bucket_index_pool() returned " << ret << dendl; return ret; } - string oid; - const auto& current_index = bucket_info.layout.current_index; ret = get_bucket_index_object(bucket_oid_base, current_index.layout.normal, - current_index.gen, obj_key, &oid, shard_id); + current_index.gen, obj_key, + &bucket_obj->obj.oid, shard_id); if (ret < 0) { ldpp_dout(dpp, 10) << "get_bucket_index_object() returned ret=" << ret << dendl; return ret; } - *bucket_obj = svc.rados->obj(pool, oid); - return 0; } @@ -310,23 +303,19 @@ int RGWSI_BucketIndex_RADOS::open_bucket_index_shard(const DoutPrefixProvider *d const RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& index, int shard_id, - RGWSI_RADOS::Obj *bucket_obj) + rgw_rados_ref* bucket_obj) { - RGWSI_RADOS::Pool index_pool; string bucket_oid_base; - int ret = open_bucket_index_base(dpp, bucket_info, &index_pool, &bucket_oid_base); + int ret = open_bucket_index_base(dpp, bucket_info, &bucket_obj->ioctx, + &bucket_oid_base); if (ret < 0) { ldpp_dout(dpp, 20) << __func__ << ": open_bucket_index_pool() returned " << ret << dendl; return ret; } - string oid; - get_bucket_index_object(bucket_oid_base, index.layout.normal, - index.gen, shard_id, &oid); - - *bucket_obj = svc.rados->obj(index_pool, oid); + index.gen, shard_id, &bucket_obj->obj.oid); return 0; } @@ -339,7 +328,7 @@ int RGWSI_BucketIndex_RADOS::cls_bucket_head(const DoutPrefixProvider *dpp, map<int, string> *bucket_instance_ids, optional_yield y) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> oids; int r = open_bucket_index(dpp, bucket_info, shard_id, idx_layout, &index_pool, &oids, bucket_instance_ids); if (r < 0) @@ -350,7 +339,8 @@ int RGWSI_BucketIndex_RADOS::cls_bucket_head(const DoutPrefixProvider *dpp, list_results.emplace(iter.first, rgw_cls_list_ret()); } - r = CLSRGWIssueGetDirHeader(index_pool.ioctx(), oids, list_results, cct->_conf->rgw_bucket_index_max_aio)(); + r = CLSRGWIssueGetDirHeader(index_pool, oids, list_results, + cct->_conf->rgw_bucket_index_max_aio)(); if (r < 0) return r; @@ -361,9 +351,9 @@ int RGWSI_BucketIndex_RADOS::cls_bucket_head(const DoutPrefixProvider *dpp, return 0; } -int RGWSI_BucketIndex_RADOS::init_index(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& idx_layout) +int RGWSI_BucketIndex_RADOS::init_index(const DoutPrefixProvider *dpp,RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& idx_layout) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; string dir_oid = dir_oid_prefix; int r = open_bucket_index_pool(dpp, bucket_info, &index_pool); @@ -376,14 +366,14 @@ int RGWSI_BucketIndex_RADOS::init_index(const DoutPrefixProvider *dpp, RGWBucket map<int, string> bucket_objs; get_bucket_index_objects(dir_oid, idx_layout.layout.normal.num_shards, idx_layout.gen, &bucket_objs); - return CLSRGWIssueBucketIndexInit(index_pool.ioctx(), + return CLSRGWIssueBucketIndexInit(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } int RGWSI_BucketIndex_RADOS::clean_index(const DoutPrefixProvider *dpp, RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& idx_layout) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; std::string dir_oid = dir_oid_prefix; int r = open_bucket_index_pool(dpp, bucket_info, &index_pool); @@ -397,7 +387,7 @@ int RGWSI_BucketIndex_RADOS::clean_index(const DoutPrefixProvider *dpp, RGWBucke get_bucket_index_objects(dir_oid, idx_layout.layout.normal.num_shards, idx_layout.gen, &bucket_objs); - return CLSRGWIssueBucketIndexClean(index_pool.ioctx(), + return CLSRGWIssueBucketIndexClean(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } @@ -440,7 +430,7 @@ int RGWSI_BucketIndex_RADOS::get_reshard_status(const DoutPrefixProvider *dpp, c { map<int, string> bucket_objs; - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; int r = open_bucket_index(dpp, bucket_info, std::nullopt, @@ -455,7 +445,7 @@ int RGWSI_BucketIndex_RADOS::get_reshard_status(const DoutPrefixProvider *dpp, c for (auto i : bucket_objs) { cls_rgw_bucket_instance_entry entry; - int ret = cls_rgw_get_bucket_resharding(index_pool.ioctx(), i.second, &entry); + int ret = cls_rgw_get_bucket_resharding(index_pool, i.second, &entry); if (ret < 0 && ret != -ENOENT) { ldpp_dout(dpp, -1) << "ERROR: " << __func__ << ": cls_rgw_get_bucket_resharding() returned ret=" << ret << dendl; return ret; diff --git a/src/rgw/services/svc_bi_rados.h b/src/rgw/services/svc_bi_rados.h index feba0cfcd19..35f5daba2ed 100644 --- a/src/rgw/services/svc_bi_rados.h +++ b/src/rgw/services/svc_bi_rados.h @@ -45,15 +45,15 @@ class RGWSI_BucketIndex_RADOS : public RGWSI_BucketIndex int open_pool(const DoutPrefixProvider *dpp, const rgw_pool& pool, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, bool mostly_omap); int open_bucket_index_pool(const DoutPrefixProvider *dpp, - const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool); + const RGWBucketInfo& bucket_info, + librados::IoCtx* index_pool); int open_bucket_index_base(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, std::string *bucket_oid_base); // return the index oid for the given shard id @@ -77,9 +77,10 @@ class RGWSI_BucketIndex_RADOS : public RGWSI_BucketIndex public: + librados::Rados* rados{nullptr}; + struct Svc { RGWSI_Zone *zone{nullptr}; - RGWSI_RADOS *rados{nullptr}; RGWSI_BILog_RADOS *bilog{nullptr}; RGWDataChangesLog *datalog_rados{nullptr}; } svc; @@ -87,7 +88,7 @@ public: RGWSI_BucketIndex_RADOS(CephContext *cct); void init(RGWSI_Zone *zone_svc, - RGWSI_RADOS *rados_svc, + librados::Rados* rados_, RGWSI_BILog_RADOS *bilog_svc, RGWDataChangesLog *datalog_rados_svc); @@ -141,26 +142,24 @@ public: int open_bucket_index_shard(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const std::string& obj_key, - RGWSI_RADOS::Obj *bucket_obj, + rgw_rados_ref* bucket_obj, int *shard_id); int open_bucket_index_shard(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& index, - int shard_id, RGWSI_RADOS::Obj *bucket_obj); + int shard_id, rgw_rados_ref* bucket_obj); int open_bucket_index(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, std::string *bucket_oid); int open_bucket_index(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, std::optional<int> shard_id, const rgw::bucket_index_layout_generation& idx_layout, - RGWSI_RADOS::Pool *index_pool, + librados::IoCtx* index_pool, std::map<int, std::string> *bucket_objs, std::map<int, std::string> *bucket_instance_ids); }; - - diff --git a/src/rgw/services/svc_bilog_rados.cc b/src/rgw/services/svc_bilog_rados.cc index f4bb13ec1f0..a33eb508848 100644 --- a/src/rgw/services/svc_bilog_rados.cc +++ b/src/rgw/services/svc_bilog_rados.cc @@ -26,7 +26,7 @@ int RGWSI_BILog_RADOS::log_trim(const DoutPrefixProvider *dpp, std::string_view start_marker, std::string_view end_marker) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; BucketIndexShardsManager start_marker_mgr; @@ -48,32 +48,32 @@ int RGWSI_BILog_RADOS::log_trim(const DoutPrefixProvider *dpp, return r; } - return CLSRGWIssueBILogTrim(index_pool.ioctx(), start_marker_mgr, end_marker_mgr, bucket_objs, + return CLSRGWIssueBILogTrim(index_pool, start_marker_mgr, end_marker_mgr, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } int RGWSI_BILog_RADOS::log_start(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_log_layout_generation& log_layout, int shard_id) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; const auto& current_index = rgw::log_to_index_layout(log_layout); int r = svc.bi->open_bucket_index(dpp, bucket_info, shard_id, current_index, &index_pool, &bucket_objs, nullptr); if (r < 0) return r; - return CLSRGWIssueResyncBucketBILog(index_pool.ioctx(), bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); + return CLSRGWIssueResyncBucketBILog(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } int RGWSI_BILog_RADOS::log_stop(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_log_layout_generation& log_layout, int shard_id) { - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> bucket_objs; const auto& current_index = rgw::log_to_index_layout(log_layout); int r = svc.bi->open_bucket_index(dpp, bucket_info, shard_id, current_index, &index_pool, &bucket_objs, nullptr); if (r < 0) return r; - return CLSRGWIssueBucketBILogStop(index_pool.ioctx(), bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); + return CLSRGWIssueBucketBILogStop(index_pool, bucket_objs, cct->_conf->rgw_bucket_index_max_aio)(); } static void build_bucket_index_marker(const string& shard_id_str, @@ -95,7 +95,7 @@ int RGWSI_BILog_RADOS::log_list(const DoutPrefixProvider *dpp, ldpp_dout(dpp, 20) << __func__ << ": " << bucket_info.bucket << " marker " << marker << " shard_id=" << shard_id << " max " << max << dendl; result.clear(); - RGWSI_RADOS::Pool index_pool; + librados::IoCtx index_pool; map<int, string> oids; map<int, cls_rgw_bi_log_list_ret> bi_log_lists; const auto& current_index = rgw::log_to_index_layout(log_layout); @@ -112,8 +112,8 @@ int RGWSI_BILog_RADOS::log_list(const DoutPrefixProvider *dpp, r = marker_mgr.from_string(marker, shard_id); if (r < 0) return r; - - r = CLSRGWIssueBILogList(index_pool.ioctx(), marker_mgr, max, oids, bi_log_lists, cct->_conf->rgw_bucket_index_max_aio)(); + + r = CLSRGWIssueBILogList(index_pool, marker_mgr, max, oids, bi_log_lists, cct->_conf->rgw_bucket_index_max_aio)(); if (r < 0) return r; |