From 63c9382eafb5d40441ce487c2430c98c214ce84a Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Fri, 25 Aug 2017 17:55:11 -0400 Subject: [PATCH] rgw_file: fix LRU lane lock in evict_block() Found by "Supriti Singh" . Fixes http://tracker.ceph.com/issues/21141 Signed-off-by: Matt Benjamin (cherry picked from commit 3301596734adcbda1e8e76a742935efdeb7518fd) --- src/common/cohort_lru.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/cohort_lru.h b/src/common/cohort_lru.h index 8d579cb99bb..6c8264a5efd 100644 --- a/src/common/cohort_lru.h +++ b/src/common/cohort_lru.h @@ -136,6 +136,7 @@ namespace cohort { for (int ix = 0; ix < n_lanes; ++ix, lane_ix = next_evict_lane()) { Lane& lane = qlane[lane_ix]; + lane.lock.lock(); /* if object at LRU has refcnt==1, it may be reclaimable */ Object* o = &(lane.q.back()); if (can_reclaim(o)) { @@ -156,7 +157,6 @@ namespace cohort { return o; } else { // XXX can't make unreachable (means what?) - lane.lock.lock(); --(o->lru_refcnt); o->lru_flags &= ~FLAG_EVICTING; /* unlock in next block */ -- 2.47.3