summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam C. Emerson <aemerson@redhat.com>2022-12-02 06:26:00 +0100
committerCasey Bodley <cbodley@redhat.com>2023-11-29 19:15:25 +0100
commitac27d7a82492c045eff4d2107865d29924147247 (patch)
tree406ba4053afb0e06cf887662451d3ff691df823f
parentrgw: Distentangle `rgw_rados_ref` from `RGWSI_RADOS` (diff)
downloadceph-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.cc11
-rw-r--r--src/rgw/driver/rados/rgw_cr_rados.h4
-rw-r--r--src/rgw/driver/rados/rgw_rados.cc103
-rw-r--r--src/rgw/driver/rados/rgw_rados.h4
-rw-r--r--src/rgw/driver/rados/rgw_service.cc10
-rw-r--r--src/rgw/driver/rados/rgw_service.h19
-rw-r--r--src/rgw/driver/rados/rgw_tools.h65
-rw-r--r--src/rgw/rgw_sal.cc9
-rw-r--r--src/rgw/services/svc_bi_rados.cc66
-rw-r--r--src/rgw/services/svc_bi_rados.h23
-rw-r--r--src/rgw/services/svc_bilog_rados.cc18
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;