From: Casey Bodley Date: Wed, 12 Feb 2025 17:35:37 +0000 (-0500) Subject: rgw/rados: calculate_preferred_shards takes bool is_versioned X-Git-Tag: v20.3.0~408^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=fe3bc7605c7254e53cbd82ccdeb469fbdd6d465f;p=ceph.git rgw/rados: calculate_preferred_shards takes bool is_versioned Signed-off-by: Casey Bodley --- diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc index cbbdab282d69c..9dff93ca06f10 100644 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@ -10815,7 +10815,7 @@ int RGWRados::cls_bucket_head_async(const DoutPrefixProvider *dpp, const RGWBuck // 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, @@ -10827,7 +10827,7 @@ void RGWRados::calculate_preferred_shards(const DoutPrefixProvider* dpp, uint64_t max_objs_per_shard = cct->_conf.get_val("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. @@ -10870,12 +10870,13 @@ int RGWRados::check_bucket_shards(const RGWBucketInfo& bucket_info, 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) { diff --git a/src/rgw/driver/rados/rgw_rados.h b/src/rgw/driver/rados/rgw_rados.h index 27c44a8ce6ec7..e7272c5b375fa 100644 --- a/src/rgw/driver/rados/rgw_rados.h +++ b/src/rgw/driver/rados/rgw_rados.h @@ -1628,7 +1628,7 @@ public: 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, diff --git a/src/rgw/driver/rados/rgw_reshard.cc b/src/rgw/driver/rados/rgw_reshard.cc index f9819d514b18d..d4999b3619854 100644 --- a/src/rgw/driver/rados/rgw_reshard.cc +++ b/src/rgw/driver/rados/rgw_reshard.cc @@ -1642,6 +1642,7 @@ int RGWReshard::process_entry(const cls_rgw_reshard_entry& entry, 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 = @@ -1653,7 +1654,7 @@ int RGWReshard::process_entry(const cls_rgw_reshard_entry& entry, // 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