From 52bed3747e84e9d5e865f02a57513359c78ac607 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Wed, 22 Nov 2023 09:19:37 -0500 Subject: [PATCH] rgw/sal: RGWGetUserStats_CB cleanup the base class doesn't need member variables. the derived class in rgw_quota.cc accepts stats by const-ref Signed-off-by: Casey Bodley --- src/rgw/rgw_quota.cc | 27 ++++++++++++++------------- src/rgw/rgw_sal.h | 12 ++---------- src/rgw/services/svc_user_rados.cc | 14 +++++--------- 3 files changed, 21 insertions(+), 32 deletions(-) diff --git a/src/rgw/rgw_quota.cc b/src/rgw/rgw_quota.cc index c2f300b1fdb..b245f7a9721 100644 --- a/src/rgw/rgw_quota.cc +++ b/src/rgw/rgw_quota.cc @@ -86,9 +86,9 @@ public: const DoutPrefixProvider* dpp); void adjust_stats(const rgw_user& user, rgw_bucket& bucket, int objs_delta, uint64_t added_bytes, uint64_t removed_bytes); - void set_stats(const rgw_user& user, const rgw_bucket& bucket, RGWQuotaCacheStats& qs, RGWStorageStats& stats); + void set_stats(const rgw_user& user, const rgw_bucket& bucket, RGWQuotaCacheStats& qs, const RGWStorageStats& stats); int async_refresh(const rgw_user& user, const rgw_bucket& bucket, RGWQuotaCacheStats& qs); - void async_refresh_response(const rgw_user& user, rgw_bucket& bucket, RGWStorageStats& stats); + void async_refresh_response(const rgw_user& user, rgw_bucket& bucket, const RGWStorageStats& stats); void async_refresh_fail(const rgw_user& user, rgw_bucket& bucket); class AsyncRefreshHandler { @@ -140,7 +140,7 @@ void RGWQuotaCache::async_refresh_fail(const rgw_user& user, rgw_bucket& buck } template -void RGWQuotaCache::async_refresh_response(const rgw_user& user, rgw_bucket& bucket, RGWStorageStats& stats) +void RGWQuotaCache::async_refresh_response(const rgw_user& user, rgw_bucket& bucket, const RGWStorageStats& stats) { ldout(driver->ctx(), 20) << "async stats refresh response for bucket=" << bucket << dendl; @@ -154,7 +154,7 @@ void RGWQuotaCache::async_refresh_response(const rgw_user& user, rgw_bucket& } template -void RGWQuotaCache::set_stats(const rgw_user& user, const rgw_bucket& bucket, RGWQuotaCacheStats& qs, RGWStorageStats& stats) +void RGWQuotaCache::set_stats(const rgw_user& user, const rgw_bucket& bucket, RGWQuotaCacheStats& qs, const RGWStorageStats& stats) { qs.stats = stats; qs.expiration = ceph_clock_now(); @@ -380,17 +380,18 @@ class UserAsyncRefreshHandler : public RGWQuotaCache::AsyncRefreshHand public RGWGetUserStats_CB { const DoutPrefixProvider *dpp; rgw_bucket bucket; -public: - UserAsyncRefreshHandler(const DoutPrefixProvider *_dpp, rgw::sal::Driver* _driver, RGWQuotaCache *_cache, - const rgw_user& _user, const rgw_bucket& _bucket) : - RGWQuotaCache::AsyncRefreshHandler(_driver, _cache), - RGWGetUserStats_CB(_user), - dpp(_dpp), - bucket(_bucket) {} + rgw_user user; + public: + UserAsyncRefreshHandler(const DoutPrefixProvider *_dpp, rgw::sal::Driver* _driver, + RGWQuotaCache *_cache, + const rgw_user& _user, const rgw_bucket& _bucket) + : RGWQuotaCache::AsyncRefreshHandler(_driver, _cache), + dpp(_dpp), bucket(_bucket), user(_user) + {} void drop_reference() override { put(); } int init_fetch() override; - void handle_response(int r) override; + void handle_response(int r, const RGWStorageStats& stats) override; }; int UserAsyncRefreshHandler::init_fetch() @@ -409,7 +410,7 @@ int UserAsyncRefreshHandler::init_fetch() return 0; } -void UserAsyncRefreshHandler::handle_response(int r) +void UserAsyncRefreshHandler::handle_response(int r, const RGWStorageStats& stats) { if (r < 0) { ldout(driver->ctx(), 20) << "AsyncRefreshHandler::handle_response() r=" << r << dendl; diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 9b099be4ac2..73ba1e18fd1 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -95,16 +95,8 @@ public: }; class RGWGetUserStats_CB : public RefCountedObject { -protected: - rgw_user user; - RGWStorageStats stats; -public: - explicit RGWGetUserStats_CB(const rgw_user& _user) : user(_user) {} - ~RGWGetUserStats_CB() override {} - virtual void handle_response(int r) = 0; - virtual void set_response(RGWStorageStats& _stats) { - stats = _stats; - } + public: + virtual void handle_response(int r, const RGWStorageStats& stats) = 0; }; struct RGWObjState { diff --git a/src/rgw/services/svc_user_rados.cc b/src/rgw/services/svc_user_rados.cc index c99af935415..1b23dad53fb 100644 --- a/src/rgw/services/svc_user_rados.cc +++ b/src/rgw/services/svc_user_rados.cc @@ -935,17 +935,13 @@ public: void handle_response(int r, cls_user_header& header) override { const cls_user_stats& hs = header.stats; - if (r >= 0) { - RGWStorageStats stats; + RGWStorageStats stats; - stats.size = hs.total_bytes; - stats.size_rounded = hs.total_bytes_rounded; - stats.num_objects = hs.total_entries; + stats.size = hs.total_bytes; + stats.size_rounded = hs.total_bytes_rounded; + stats.num_objects = hs.total_entries; - cb->set_response(stats); - } - - cb->handle_response(r); + cb->handle_response(r, stats); cb->put(); } -- 2.39.5