]> www.infradead.org Git - users/jedix/linux-maple.git/commit
slab: determine barn status racily outside of lock
authorVlastimil Babka <vbabka@suse.cz>
Thu, 13 Feb 2025 11:50:34 +0000 (12:50 +0100)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 28 Aug 2025 20:19:58 +0000 (16:19 -0400)
commit71ed70b292fa9379692fdfc1c6493ab58f9564b1
treef45c553f29042969ebdba94166e7055611d0c429
parent8dffa6f8de6153d0890579f4fca08da85a56e8df
slab: determine barn status racily outside of lock

The possibility of many barn operations is determined by the current
number of full or empty sheaves. Taking the barn->lock just to find out
that e.g. there are no empty sheaves results in unnecessary overhead and
lock contention. Thus perform these checks outside of the lock with a
data_race() annotated variable read and fail quickly without taking the
lock.

Checks for sheaf availability that racily succeed have to be obviously
repeated under the lock for correctness, but we can skip repeating
checks if there are too many sheaves on the given list as the limits
don't need to be strict.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Suren Baghdasaryan <surenb@google.com>
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
mm/slub.c