// uses information that the store has easy access to transition to the shard calculatoin logic
void RGWRados::calculate_preferred_shards(const DoutPrefixProvider* dpp,
- const RGWBucketInfo& bucket_info,
+ bool is_versioned,
const uint64_t num_objs,
const uint32_t num_source_shards,
const uint32_t min_layout_shards,
uint64_t max_objs_per_shard =
cct->_conf.get_val<uint64_t>("rgw_max_objs_per_shard");
- if (bucket_info.versioned()) {
+ if (is_versioned) {
// Since each versioned bucket requires 4 entries for the first object
// and 2 additional entries for each additional object, we want to
// trigger resharding sooner.
bool need_resharding = false;
uint32_t suggested_num_shards = 0;
+ const bool is_versioned = bucket_info.versioned();
const uint32_t num_source_shards =
rgw::current_num_shards(bucket_info.layout);
const uint32_t min_layout_shards =
rgw::current_min_layout_shards(bucket_info.layout);
- calculate_preferred_shards(dpp, bucket_info, num_objs,
+ calculate_preferred_shards(dpp, is_versioned, num_objs,
num_source_shards, min_layout_shards,
need_resharding, &suggested_num_shards);
if (! need_resharding) {
optional_yield y, bool check_size_only = false);
void calculate_preferred_shards(const DoutPrefixProvider* dpp,
- const RGWBucketInfo& bucket_info,
+ bool is_versioned,
const uint64_t num_objs,
const uint32_t current_shard_count,
const uint32_t min_layout_shards,
num_entries += s.second.num_objects;
}
+ const bool is_versioned = bucket_info.versioned();
const uint32_t current_shard_count =
rgw::current_num_shards(bucket_info.layout);
const uint32_t min_layout_shards =
// needed to perform the calculation before calling
// calculating_preferred_shards() in this class
store->getRados()->calculate_preferred_shards(
- dpp, bucket_info, num_entries, current_shard_count, min_layout_shards,
+ dpp, is_versioned, num_entries, current_shard_count, min_layout_shards,
needs_resharding, &suggested_shard_count);
// if we no longer need resharding or currently need to expand