linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC] locking/rwsem: dont wake up wwaiter in case of lock holder
@ 2022-03-26 13:40 Hillf Danton
  2022-03-28 14:18 ` David Hildenbrand
  0 siblings, 1 reply; 4+ messages in thread
From: Hillf Danton @ 2022-03-26 13:40 UTC (permalink / raw)
  To: Waiman Long; +Cc: Hillf Danton, Peter Zijlstra, MM, LKML

In the slowpath of down for write, we bail out in case of signal received and
try to wake up any pending waiter but it makes no sense to wake up a write
waiter given any lock holder, either write or read.

The RFC is do nothing for wwaiter if any lock holder present - they will fill
their duty at lock release time.

Only for thoughts now.

Hillf

--- x/kernel/locking/rwsem.c
+++ y/kernel/locking/rwsem.c
@@ -418,6 +418,8 @@ static void rwsem_mark_wake(struct rw_se
 	waiter = rwsem_first_waiter(sem);
 
 	if (waiter->type == RWSEM_WAITING_FOR_WRITE) {
+		if (RWSEM_LOCK_MASK & atomic_long_read(&sem->count))
+			return;
 		if (wake_type == RWSEM_WAKE_ANY) {
 			/*
 			 * Mark writer at the front of the queue for wakeup.
--


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-01 12:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-26 13:40 [RFC] locking/rwsem: dont wake up wwaiter in case of lock holder Hillf Danton
2022-03-28 14:18 ` David Hildenbrand
2022-03-28 15:11   ` Waiman Long
2022-04-01 12:15     ` Hillf Danton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox