From: Matt Benjamin Date: Fri, 25 Aug 2017 21:55:11 +0000 (-0400) Subject: rgw_file: fix LRU lane lock in evict_block() X-Git-Tag: v13.0.1~1165^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3301596734adcbda1e8e76a742935efdeb7518fd;p=ceph-ci.git 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 --- 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 */