]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/intrusive_lru: generalize evict() slightly to allow other target values
authorSamuel Just <sjust@redhat.com>
Thu, 18 Jan 2024 04:22:10 +0000 (20:22 -0800)
committerSamuel Just <sjust@redhat.com>
Thu, 18 Jan 2024 05:08:17 +0000 (21:08 -0800)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/common/intrusive_lru.h

index 6ae13c8f99fc136b255b2c8a5b7006160e8c826c..fb94b5fd9ead1da94136d1a70caae297f46c224b 100644 (file)
@@ -122,9 +122,9 @@ class intrusive_lru {
 
   // when the lru_set exceeds its target size, evict
   // only unreferenced elements from it (if any).
-  void evict() {
+  void evict(unsigned target_size) {
     while (!unreferenced_list.empty() &&
-          lru_set.size() > lru_target_size) {
+          lru_set.size() > target_size) {
       auto &evict_target = unreferenced_list.front();
       assert(evict_target.is_unreferenced());
       unreferenced_list.pop_front();
@@ -150,7 +150,7 @@ class intrusive_lru {
     assert(b.is_unreferenced());
     lru_set.insert(b);
     b.lru = this;
-    evict();
+    evict(lru_target_size);
   }
 
   // an element in the lru_set has no users,
@@ -159,7 +159,7 @@ class intrusive_lru {
     assert(b.is_referenced());
     unreferenced_list.push_back(b);
     b.lru = nullptr;
-    evict();
+    evict(lru_target_size);
   }
 
 public:
@@ -226,7 +226,7 @@ public:
 
   void set_target_size(size_t target_size) {
     lru_target_size = target_size;
-    evict();
+    evict(lru_target_size);
   }
 
   ~intrusive_lru() {