From e5d9afc9140847329f9555d4d2a135a85e3d1cca Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Fri, 13 Jan 2023 15:04:48 +0300 Subject: [PATCH] os/bluestore: touch onode in cache LRU explicitly. Signed-off-by: Igor Fedotov (cherry picked from commit 1d4abf7e39fbfce674095161bfd002d0b5abece5) Conflicts: src/os/bluestore/BlueStore.cc --- src/os/bluestore/BlueStore.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 3a29368d1074..b014931029c4 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1088,13 +1088,17 @@ struct LruOnodeCacheShard : public BlueStore::OnodeCacheShard { ceph_assert(num); --num; o->clear_cached(); + dout(20) << __func__ << " " << this << " " << o->oid << " removed" + << dendl; // remove will also decrement nref o->c->onode_space._remove(o->oid); } } else if (o->exists) { // move onode within LRU - _rm(o); - _add(o, 1); + lru.erase(lru.iterator_to(*o)); + lru.push_front(*o); + dout(20) << __func__ << " " << this << " " << o->oid << " touched" + << dendl; } } ocs->lock.unlock(); -- 2.47.3