From: Matan Breizman Date: Tue, 7 Feb 2023 19:47:55 +0000 (+0000) Subject: common/instrusive_lru: Implement for_each X-Git-Tag: v18.1.0~87^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e914da51a10ac4263a186980fb38da35a3916ef0;p=ceph.git common/instrusive_lru: Implement for_each Signed-off-by: Matan Breizman (cherry picked from commit 9f8e2329882a2d5101489b7c2445285a43d4ed13) --- diff --git a/src/common/intrusive_lru.h b/src/common/intrusive_lru.h index d780b2211924..e8c3cda3e64e 100644 --- a/src/common/intrusive_lru.h +++ b/src/common/intrusive_lru.h @@ -167,6 +167,14 @@ public: } } + template + void for_each(F&& f) { + for (auto& v : lru_set) { + access(v); + f(TRef{static_cast(&v)}); + } + } + /** * Returns the TRef corresponding to k if it exists or * nullptr otherwise. diff --git a/src/crimson/osd/object_context.h b/src/crimson/osd/object_context.h index a4ecc6ec329e..48b28ae665f3 100644 --- a/src/crimson/osd/object_context.h +++ b/src/crimson/osd/object_context.h @@ -268,6 +268,11 @@ public: obc_lru.clear_range(from, to); } + template + void for_each(F&& f) { + obc_lru.for_each(std::forward(f)); + } + const char** get_tracked_conf_keys() const final; void handle_conf_change(const crimson::common::ConfigProxy& conf, const std::set &changed) final;