From: Adam C. Emerson Date: Tue, 24 Mar 2026 22:20:58 +0000 (-0400) Subject: rgw/dedup: Replace VLAs with `std::vector` X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=80a41b3a683f87318c126f446a71a2ae1af928fc;p=ceph.git rgw/dedup: Replace VLAs with `std::vector` Signed-off-by: Adam C. Emerson --- diff --git a/src/rgw/driver/rados/rgw_dedup.cc b/src/rgw/driver/rados/rgw_dedup.cc index 2446d43ff92d..d632405506f6 100644 --- a/src/rgw/driver/rados/rgw_dedup.cc +++ b/src/rgw/driver/rados/rgw_dedup.cc @@ -2546,12 +2546,12 @@ namespace rgw::dedup { storage_class_idx_t sc_idx = remapper.remap(RGW_STORAGE_CLASS_STANDARD, dpp, &p_stats->failed_map_overflow); ceph_assert(sc_idx != remapper_t::NULL_IDX); - uint32_t slab_count_arr[num_work_shards]; + std::vector slab_count_arr(num_work_shards); // first load all etags to hashtable to find dedups // the entries come from bucket-index and got minimal info (etag, size) for (work_shard_t worker_id = 0; worker_id < num_work_shards; worker_id++) { process_all_slabs(p_table, STEP_BUILD_TABLE, md5_shard, worker_id, - slab_count_arr+worker_id, p_stats, nullptr, &remapper); + slab_count_arr.data()+worker_id, p_stats, nullptr, &remapper); if (unlikely(d_ctl.should_stop())) { ldpp_dout(dpp, 5) << __func__ << "::STEP_BUILD_TABLE::STOPPED\n" << dendl; return -ECANCELED; @@ -2583,7 +2583,7 @@ namespace rgw::dedup { disk_block_seq_t disk_block_seq(dpp, arr, num_work_shards, md5_shard, &wstat); for (work_shard_t worker_id = 0; worker_id < num_work_shards; worker_id++) { process_all_slabs(p_table, STEP_READ_ATTRIBUTES, md5_shard, worker_id, - slab_count_arr+worker_id, p_stats, &disk_block_seq, &remapper); + slab_count_arr.data()+worker_id, p_stats, &disk_block_seq, &remapper); if (unlikely(d_ctl.should_stop())) { ldpp_dout(dpp, 5) << __func__ << "::STEP_READ_ATTRIBUTES::STOPPED\n" << dendl; return -ECANCELED; diff --git a/src/rgw/driver/rados/rgw_dedup_cluster.cc b/src/rgw/driver/rados/rgw_dedup_cluster.cc index fafd66176eff..45649a79c465 100644 --- a/src/rgw/driver/rados/rgw_dedup_cluster.cc +++ b/src/rgw/driver/rados/rgw_dedup_cluster.cc @@ -1030,10 +1030,10 @@ namespace rgw::dedup { { std::map owner_map; bool show_time = true; - bufferlist bl_arr[num_work_shards]; - shard_progress_t sp_arr[num_work_shards]; + std::vector bl_arr(num_work_shards); + std::vector sp_arr(num_work_shards); int cnt = collect_shard_stats(store, dpp, epoch.time, num_work_shards, - WORKER_SHARD_PREFIX, bl_arr, sp_arr); + WORKER_SHARD_PREFIX, bl_arr.data(), sp_arr.data()); if (cnt != num_work_shards && 0) { std::cerr << ">>>Partial work shard stats recived " << cnt << " / " << num_work_shards << "\n" << std::endl; @@ -1055,11 +1055,11 @@ namespace rgw::dedup { std::cerr << __func__ << "::(2)failed worker_stats_t decode #" << shard << std::endl; continue; } - collect_single_shard_stats(dpp, owner_map, sp_arr, shard, &show_time, "WORKER"); + collect_single_shard_stats(dpp, owner_map, sp_arr.data(), shard, &show_time, "WORKER"); } Formatter::ObjectSection worker_stats(*fmt, "worker_stats"); wrk_stats_sum.dump(fmt); - show_incomplete_shards_fmt(has_incomplete_shards, num_work_shards, sp_arr, fmt); + show_incomplete_shards_fmt(has_incomplete_shards, num_work_shards, sp_arr.data(), fmt); md5_start_time = show_time_func_fmt(epoch.time, show_time, owner_map, fmt); } @@ -1067,10 +1067,10 @@ namespace rgw::dedup { std::map owner_map; bool show_time = true; md5_stats_t md5_stats_sum; - bufferlist bl_arr[num_md5_shards]; - shard_progress_t sp_arr[num_md5_shards]; + std::vector bl_arr(num_md5_shards); + std::vector sp_arr(num_md5_shards); int cnt = collect_shard_stats(store, dpp, epoch.time, num_md5_shards, - MD5_SHARD_PREFIX, bl_arr, sp_arr); + MD5_SHARD_PREFIX, bl_arr.data(), sp_arr.data()); if (cnt != num_md5_shards && 0) { std::cerr << ">>>Partial MD5_SHARD stats recived " << cnt << " / " << num_md5_shards << "\n" << std::endl; @@ -1092,12 +1092,12 @@ namespace rgw::dedup { std::cerr << __func__ << "::failed md5_stats_t decode #" << shard << std::endl; continue; } - collect_single_shard_stats(dpp, owner_map, sp_arr, shard, &show_time, "MD5"); + collect_single_shard_stats(dpp, owner_map, sp_arr.data(), shard, &show_time, "MD5"); } { Formatter::ObjectSection outer(*fmt, "md5_stats"); md5_stats_sum.dump(fmt); - show_incomplete_shards_fmt(has_incomplete_shards, num_md5_shards, sp_arr, fmt); + show_incomplete_shards_fmt(has_incomplete_shards, num_md5_shards, sp_arr.data(), fmt); show_time_func_fmt(md5_start_time, show_time, owner_map, fmt); } show_dedup_ratio_estimate_fmt(wrk_stats_sum, md5_stats_sum, fmt);