From: Samarah Date: Tue, 19 Dec 2023 21:54:47 +0000 (+0000) Subject: d4n/policy: Fix `find_victim` logic so victim is found in `eviction` X-Git-Tag: testing/wip-batrick-testing-20240411.154038~45^2~24 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=29f811fee8ed5835a8f681c74e565557d300f361;p=ceph-ci.git d4n/policy: Fix `find_victim` logic so victim is found in `eviction` method Signed-off-by: Samarah --- diff --git a/src/rgw/driver/d4n/d4n_policy.cc b/src/rgw/driver/d4n/d4n_policy.cc index 53d7d875fc1..80d36cf4edf 100644 --- a/src/rgw/driver/d4n/d4n_policy.cc +++ b/src/rgw/driver/d4n/d4n_policy.cc @@ -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; diff --git a/src/rgw/driver/d4n/d4n_policy.h b/src/rgw/driver/d4n/d4n_policy.h index e3f8a41f408..0339e2b62d6 100644 --- a/src/rgw/driver/d4n/d4n_policy.h +++ b/src/rgw/driver/d4n/d4n_policy.h @@ -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} {