]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
locking/rwsem: Remove the list_head from struct rw_semaphore
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 5 Mar 2026 19:55:41 +0000 (19:55 +0000)
committerPeter Zijlstra <peterz@infradead.org>
Sun, 8 Mar 2026 10:06:51 +0000 (11:06 +0100)
commit1ea4b473504b6dc6a0d21c298519aff2d52433c9
tree85e8f91f16ceff2a26c8eb479e848ab78cbb3663
parentb91d5d4bcf1266257a9e0199e1b4ad7fa8771baa
locking/rwsem: Remove the list_head from struct rw_semaphore

Instead of embedding a list_head in struct rw_semaphore, store a pointer
to the first waiter.  The list of waiters remains a doubly linked list
so we can efficiently add to the tail of the list, remove from the front
(or middle) of the list.

Some of the list manipulation becomes more complicated, but it's a
reasonable tradeoff on the slow paths to shrink some core data structures
like struct inode.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260305195545.3707590-2-willy@infradead.org
include/linux/rwsem.h
kernel/locking/rwsem.c