From: Casey Bodley Date: Tue, 3 Feb 2026 16:38:25 +0000 (-0500) Subject: rgw/rados: pass SiteConfig into bucket_stats() X-Git-Tag: v20.2.2~44^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=62a61d2816fe5307b1de3a515c5c732f96722b60;p=ceph.git rgw/rados: pass SiteConfig into bucket_stats() Signed-off-by: Casey Bodley (cherry picked from commit ca6d50921286d31cf26096f80ed5a4287f539abd) Conflicts: src/rgw/driver/rados/rgw_bucket.cc missing restore stats --- diff --git a/src/rgw/driver/rados/rgw_bucket.cc b/src/rgw/driver/rados/rgw_bucket.cc index 06cfa1b5db8..f3253830a30 100644 --- a/src/rgw/driver/rados/rgw_bucket.cc +++ b/src/rgw/driver/rados/rgw_bucket.cc @@ -1511,7 +1511,7 @@ int RGWBucketAdminOp::sync_bucket(rgw::sal::Driver* driver, RGWBucketAdminOpStat return bucket.sync(op_state, dpp, y, err_msg); } -static int bucket_stats(rgw::sal::Driver* driver, +static int bucket_stats(rgw::sal::Driver* driver, const rgw::SiteConfig& site, const std::string& tenant_name, const std::string& bucket_name, Formatter* formatter, const DoutPrefixProvider* dpp, optional_yield y) { @@ -1705,6 +1705,7 @@ int RGWBucketAdminOp::limit_check(rgw::sal::Driver* driver, static int list_owner_bucket_info(const DoutPrefixProvider* dpp, optional_yield y, rgw::sal::Driver* driver, + const rgw::SiteConfig& site, const rgw_owner& owner, const std::string& tenant, const std::string& marker, @@ -1757,7 +1758,7 @@ static int list_owner_bucket_info(const DoutPrefixProvider* dpp, for (const auto& ent : listing.buckets) { if (show_stats) { - bucket_stats(driver, tenant, ent.bucket.name, formatter, dpp, y); + bucket_stats(driver, site, tenant, ent.bucket.name, formatter, dpp, y); } else { formatter->dump_string("bucket", ent.bucket.name); } @@ -1787,6 +1788,7 @@ static int list_owner_bucket_info(const DoutPrefixProvider* dpp, } int RGWBucketAdminOp::info(rgw::sal::Driver* driver, + const rgw::SiteConfig& site, RGWBucketAdminOpState& op_state, RGWFormatterFlusher& flusher, optional_yield y, @@ -1809,7 +1811,7 @@ int RGWBucketAdminOp::info(rgw::sal::Driver* driver, const bool show_stats = op_state.will_fetch_stats(); const rgw_user& user_id = op_state.get_user_id(); if (!bucket_name.empty()) { - ret = bucket_stats(driver, user_id.tenant, bucket_name, formatter, dpp, y); + ret = bucket_stats(driver, site, user_id.tenant, bucket_name, formatter, dpp, y); if (ret < 0) { return ret; } @@ -1824,10 +1826,10 @@ int RGWBucketAdminOp::info(rgw::sal::Driver* driver, if (!info.account_id.empty()) { ldpp_dout(dpp, 1) << "Listing buckets in user account " << info.account_id << dendl; - ret = list_owner_bucket_info(dpp, y, driver, info.account_id, uid.tenant, + ret = list_owner_bucket_info(dpp, y, driver, site, info.account_id, uid.tenant, op_state.marker, op_state.max_entries, show_stats, flusher); } else { - ret = list_owner_bucket_info(dpp, y, driver, uid, uid.tenant, + ret = list_owner_bucket_info(dpp, y, driver, site, uid, uid.tenant, op_state.marker, op_state.max_entries, show_stats, flusher); } if (ret < 0) { @@ -1846,7 +1848,7 @@ int RGWBucketAdminOp::info(rgw::sal::Driver* driver, return ret; } - ret = list_owner_bucket_info(dpp, y, driver, account_id, info.tenant, + ret = list_owner_bucket_info(dpp, y, driver, site, account_id, info.tenant, op_state.marker, op_state.max_entries, show_stats, flusher); if (ret < 0) { return ret; @@ -1864,7 +1866,7 @@ int RGWBucketAdminOp::info(rgw::sal::Driver* driver, &truncated); for (auto& bucket_name : buckets) { if (show_stats) { - bucket_stats(driver, user_id.tenant, bucket_name, formatter, dpp, y); + bucket_stats(driver, site, user_id.tenant, bucket_name, formatter, dpp, y); } else { formatter->dump_string("bucket", bucket_name); } diff --git a/src/rgw/driver/rados/rgw_bucket.h b/src/rgw/driver/rados/rgw_bucket.h index 1edfa6a9e31..9dd349a1420 100644 --- a/src/rgw/driver/rados/rgw_bucket.h +++ b/src/rgw/driver/rados/rgw_bucket.h @@ -397,7 +397,7 @@ public: static int remove_bucket(rgw::sal::Driver* driver, const rgw::SiteConfig& site, RGWBucketAdminOpState& op_state, optional_yield y, const DoutPrefixProvider *dpp, bool bypass_gc = false, bool keep_index_consistent = true, bool forwarded_request = false); static int remove_object(rgw::sal::Driver* driver, RGWBucketAdminOpState& op_state, const DoutPrefixProvider *dpp, optional_yield y); - static int info(rgw::sal::Driver* driver, RGWBucketAdminOpState& op_state, RGWFormatterFlusher& flusher, optional_yield y, const DoutPrefixProvider *dpp); + static int info(rgw::sal::Driver* driver, const rgw::SiteConfig& site, RGWBucketAdminOpState& op_state, RGWFormatterFlusher& flusher, optional_yield y, const DoutPrefixProvider *dpp); static int limit_check(rgw::sal::Driver* driver, RGWBucketAdminOpState& op_state, const std::list& user_ids, RGWFormatterFlusher& flusher, optional_yield y, diff --git a/src/rgw/driver/rados/rgw_rest_bucket.cc b/src/rgw/driver/rados/rgw_rest_bucket.cc index f34ee9cd352..3cee9389227 100644 --- a/src/rgw/driver/rados/rgw_rest_bucket.cc +++ b/src/rgw/driver/rados/rgw_rest_bucket.cc @@ -58,7 +58,7 @@ void RGWOp_Bucket_Info::execute(optional_yield y) op_state.set_bucket_name(bucket); op_state.set_fetch_stats(fetch_stats); - op_ret = RGWBucketAdminOp::info(driver, op_state, flusher, y, this); + op_ret = RGWBucketAdminOp::info(driver, *s->penv.site, op_state, flusher, y, this); } class RGWOp_Get_Policy : public RGWRESTOp { diff --git a/src/rgw/radosgw-admin/radosgw-admin.cc b/src/rgw/radosgw-admin/radosgw-admin.cc index f1f24d34c6c..b6aad393316 100644 --- a/src/rgw/radosgw-admin/radosgw-admin.cc +++ b/src/rgw/radosgw-admin/radosgw-admin.cc @@ -7525,7 +7525,7 @@ int main(int argc, const char **argv) bucket_op.max_entries = max_entries; else bucket_op.max_entries = 0; /* for backward compatibility */ - RGWBucketAdminOp::info(driver, bucket_op, stream_flusher, null_yield, dpp()); + RGWBucketAdminOp::info(driver, *site, bucket_op, stream_flusher, null_yield, dpp()); } else { int ret = init_bucket(tenant, bucket_name, bucket_id, &bucket); if (ret < 0) { @@ -7647,7 +7647,7 @@ int main(int argc, const char **argv) else bucket_op.max_entries = 0; /* for backward compatibility */ - int r = RGWBucketAdminOp::info(driver, bucket_op, stream_flusher, null_yield, dpp()); + int r = RGWBucketAdminOp::info(driver, *site, bucket_op, stream_flusher, null_yield, dpp()); if (r < 0) { cerr << "failure: " << cpp_strerror(-r) << ": " << err << std::endl; return posix_errortrans(-r);