]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/dedup: Replace VLAs with `std::vector`
authorAdam C. Emerson <aemerson@redhat.com>
Tue, 24 Mar 2026 22:20:58 +0000 (18:20 -0400)
committerAdam C. Emerson <aemerson@redhat.com>
Thu, 26 Mar 2026 04:07:20 +0000 (00:07 -0400)
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/rgw/driver/rados/rgw_dedup.cc
src/rgw/driver/rados/rgw_dedup_cluster.cc

index 2446d43ff92d4a1bddeccd1c0d2e3f2f7aa834ac..d632405506f67a4a6635be11262cfd23e68ffbb3 100644 (file)
@@ -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<uint32_t> 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;
index fafd66176eff99b17562c6ceb107b0563597aec1..45649a79c465868495b74cfcbce6309ebb7dfb9a 100644 (file)
@@ -1030,10 +1030,10 @@ namespace rgw::dedup {
     {
       std::map<std::string, member_time_t> owner_map;
       bool show_time = true;
-      bufferlist bl_arr[num_work_shards];
-      shard_progress_t sp_arr[num_work_shards];
+      std::vector<bufferlist> bl_arr(num_work_shards);
+      std::vector<shard_progress_t> 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<std::string, member_time_t> 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<bufferlist> bl_arr(num_md5_shards);
+      std::vector<shard_progress_t> 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);