int i = (specified_shard_id ? shard_id : 0);
for (; i < max_shards; i++) {
RGWRados::BucketShard bs(static_cast<rgw::sal::RadosStore*>(store)->getRados());
- int ret = bs.init(bucket->get_key(), i, index, nullptr /* no RGWBucketInfo */, dpp());
+ int ret = bs.init(dpp(), bucket->get_info(), index, i);
marker.clear();
if (ret < 0) {
- cerr << "ERROR: bs.init(bucket=" << bucket << ", shard=" << shard_id << "): " << cpp_strerror(-ret) << std::endl;
+ cerr << "ERROR: bs.init(bucket=" << bucket << ", shard=" << i << "): " << cpp_strerror(-ret) << std::endl;
return -ret;
}
const int max_shards = rgw::num_shards(index);
for (int i = 0; i < max_shards; i++) {
RGWRados::BucketShard bs(static_cast<rgw::sal::RadosStore*>(store)->getRados());
- int shard_id = (bucket->get_info().layout.current_index.layout.normal.num_shards > 0 ? i : -1);
- int ret = bs.init(bucket->get_key(), shard_id, index, nullptr /* no RGWBucketInfo */, dpp());
+ int ret = bs.init(dpp(), bucket->get_info(), index, i);
if (ret < 0) {
cerr << "ERROR: bs.init(bucket=" << bucket << ", shard=" << i << "): " << cpp_strerror(-ret) << std::endl;
return -ret;
const int max_shards = num_shards(index);
for (int i = 0; i < max_shards; i++) {
RGWRados::BucketShard bs(static_cast<rgw::sal::RadosStore*>(store)->getRados());
- int ret = bs.init(bucket_info.bucket, i, index, nullptr, dpp);
+ int ret = bs.init(dpp, bucket_info, index, i);
if (ret < 0) {
cerr << "ERROR: bs.init(bucket=" << bucket_info.bucket << ", shard=" << i
<< "): " << cpp_strerror(-ret) << std::endl;
RGWBucketInfo bucket_info;
RGWBucketInfo* bucket_info_p =
bucket_info_out ? bucket_info_out : &bucket_info;
-
+
int ret = store->get_bucket_instance_info(obj_ctx, bucket, *bucket_info_p, NULL, NULL, null_yield, dpp);
if (ret < 0) {
return ret;
return 0;
}
-int RGWRados::BucketShard::init(const rgw_bucket& _bucket,
- int sid, std::optional<rgw::bucket_index_layout_generation> idx_layout,
- RGWBucketInfo* bucket_info_out,
- const DoutPrefixProvider *dpp)
-{
- bucket = _bucket;
- shard_id = sid;
-
- auto obj_ctx = store->svc.sysobj->init_obj_ctx();
-
-
- RGWBucketInfo bucket_info;
- RGWBucketInfo* bucket_info_p =
- bucket_info_out ? bucket_info_out : &bucket_info;
- int ret = store->get_bucket_instance_info(obj_ctx, bucket, *bucket_info_p, NULL, NULL, null_yield, dpp);
- if (ret < 0) {
- return ret;
- }
-
- string oid;
-
- ret = store->svc.bi_rados->open_bucket_index_shard(dpp, *bucket_info_p, shard_id, idx_layout->layout.normal.num_shards,
- idx_layout->gen, &bucket_obj);
-
- if (ret < 0) {
- ldpp_dout(dpp, 0) << "ERROR: open_bucket_index_shard() returned ret=" << ret << dendl;
- return ret;
- }
- ldpp_dout(dpp, 20) << " bucket index oid: " << bucket_obj.get_raw_obj() << dendl;
-
- return 0;
-}
-
int RGWRados::BucketShard::init(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info,
const rgw_obj& obj)
{
return 0;
}
-int RGWRados::BucketShard::init(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& current_layout, int sid)
+int RGWRados::BucketShard::init(const DoutPrefixProvider *dpp,
+ const RGWBucketInfo& bucket_info,
+ const rgw::bucket_index_layout_generation& index,
+ int sid)
{
bucket = bucket_info.bucket;
shard_id = sid;
- int ret = store->svc.bi_rados->open_bucket_index_shard(dpp, bucket_info, shard_id, current_layout.layout.normal.num_shards, current_layout.gen, &bucket_obj);
+ int ret = store->svc.bi_rados->open_bucket_index_shard(dpp, bucket_info, shard_id,
+ num_shards(index), index.gen,
+ &bucket_obj);
if (ret < 0) {
ldpp_dout(dpp, 0) << "ERROR: open_bucket_index_shard() returned ret=" << ret << dendl;
return ret;
list<rgw_cls_bi_entry> *entries, bool *is_truncated)
{
BucketShard bs(this);
- int ret = bs.init(bucket_info.bucket, shard_id,
+ int ret = bs.init(dpp, bucket_info,
bucket_info.layout.current_index,
- nullptr /* no RGWBucketInfo */, dpp);
+ shard_id);
if (ret < 0) {
ldpp_dout(dpp, 5) << "bs.init() returned ret=" << ret << dendl;
return ret;
explicit BucketShard(RGWRados *_store) : store(_store), shard_id(-1) {}
int init(const rgw_bucket& _bucket, const rgw_obj& obj,
- RGWBucketInfo* out, const DoutPrefixProvider *dpp);
- int init(const rgw_bucket& _bucket, int sid,
- std::optional<rgw::bucket_index_layout_generation> current_layout,
- RGWBucketInfo* out, const DoutPrefixProvider *dpp);
+ RGWBucketInfo* out, const DoutPrefixProvider *dpp);
int init(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw_obj& obj);
- int init(const DoutPrefixProvider *dpp, const RGWBucketInfo& bucket_info, const rgw::bucket_index_layout_generation& idx_layout, int sid);
+ int init(const DoutPrefixProvider *dpp,
+ const RGWBucketInfo& bucket_info,
+ const rgw::bucket_index_layout_generation& index, int sid);
};
class Object {
{
num_shard = (bucket_info.layout.target_index->layout.normal.num_shards > 0 ? _num_shard : -1);
- bs.init(bucket_info.bucket, num_shard, bucket_info.layout.target_index,
- nullptr /* no RGWBucketInfo */, dpp);
+ bs.init(dpp, bucket_info, *bucket_info.layout.target_index, num_shard);
max_aio_completions =
store->ctx()->_conf.get_val<uint64_t>("rgw_reshard_max_aio");
for (int i = 0; i < max_shards; i++) {
RGWRados::BucketShard bs(store->getRados());
int shard_id = (info.layout.current_index.layout.normal.num_shards > 0 ? i : -1);
- int ret = bs.init(info.bucket, shard_id, info.layout.current_index, nullptr, dpp);
+ int ret = bs.init(dpp, info, info.layout.current_index, shard_id);
if (ret < 0) {
cerr << "ERROR: bs.init(bucket=" << info.bucket << ", shard=" << shard_id
<< "): " << cpp_strerror(-ret) << std::endl;