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;
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;
{
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;
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);
}
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;
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);