]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
d4n/policy: Fix `find_victim` logic so victim is found in `eviction`
authorSamarah <samarah.uriarte@ibm.com>
Tue, 19 Dec 2023 21:54:47 +0000 (21:54 +0000)
committerPritha Srivastava <prsrivas@redhat.com>
Tue, 2 Apr 2024 15:54:52 +0000 (21:24 +0530)
method

Signed-off-by: Samarah <samarah.uriarte@ibm.com>
src/rgw/driver/d4n/d4n_policy.cc
src/rgw/driver/d4n/d4n_policy.h

index 53d7d875fc1688e05c5faafff59b7919e80c8e39..80d36cf4edf012df444a06416e5ce90125fb56d6 100644 (file)
@@ -163,7 +163,7 @@ int LFUDAPolicy::get_local_weight_sum(optional_yield y) {
   }
 }
 
-CacheBlock* LFUDAPolicy::find_victim(const DoutPrefixProvider* dpp, optional_yield y) {
+CacheBlock* LFUDAPolicy::get_victim_block(const DoutPrefixProvider* dpp, optional_yield y) {
   const std::lock_guard l(lfuda_lock);
   if (entries_heap.empty())
     return nullptr;
@@ -245,7 +245,7 @@ int LFUDAPolicy::eviction(const DoutPrefixProvider* dpp, uint64_t size, optional
   uint64_t freeSpace = cacheDriver->get_free_space(dpp);
 
   while (freeSpace < size) { // TODO: Think about parallel reads and writes; can this turn into an infinite loop? 
-    CacheBlock* victim = find_victim(dpp, y);
+    CacheBlock* victim = get_victim_block(dpp, y);
 
     if (victim == nullptr) {
       ldpp_dout(dpp, 10) << "LFUDAPolicy::" << __func__ << "(): Could not retrieve victim block." << dendl;
@@ -253,7 +253,7 @@ int LFUDAPolicy::eviction(const DoutPrefixProvider* dpp, uint64_t size, optional
       return -1;
     }
 
-    std::string key = victim->cacheObj.bucketName + "_" + victim->cacheObj.objName + "_" + std::to_string(victim->blockID) + "_" + std::to_string(victim->size);
+    std::string key = entries_heap.top()->key;
     auto it = entries_map.find(key);
     if (it == entries_map.end()) {
       delete victim;
index e3f8a41f408607c9c2c8e9760d79ffc7e8c1969d..0339e2b62d6276289356fe4098c14dd01a2174f6 100644 (file)
@@ -76,7 +76,7 @@ class LFUDAPolicy : public CachePolicy {
     int get_age(optional_yield y);
     int set_local_weight_sum(size_t weight, optional_yield y);
     int get_local_weight_sum(optional_yield y);
-    CacheBlock* find_victim(const DoutPrefixProvider* dpp, optional_yield y);
+    CacheBlock* get_victim_block(const DoutPrefixProvider* dpp, optional_yield y);
 
   public:
     LFUDAPolicy(net::io_context& io_context, rgw::cache::CacheDriver* cacheDriver) : CachePolicy(), io(io_context), cacheDriver{cacheDriver} {