On Tue, Mar 21, 2023 at 05:11:40PM +0100, Sebastian Andrzej Siewior wrote: > The rw_semaphore and rwlock_t locks are unfair to writers. Readers can > indefinitely acquire the lock unless the writer fully acquired the lock. > This can never happen if there is always a reader in the critical > section owning the lock. > > Mel Gorman reported that since LTP-20220121 the dio_truncate test case > went from having 1 reader to having 16 reader and the number of readers > is sufficient to prevent the down_write ever succeeding while readers > exist. Eventually the test is killed after 30 minutes as a failure. > > Mel proposed a timeout to limit how long a writer can be blocked until > the reader is forced into the slowpath. > Thomas argued that there is no added value by providing this timeout. > From PREEMPT_RT point of view, there are no critical rw_semaphore or > rwlock_t locks left where the reader must be prefer. > s/prefer/preferred/ > Mitigate indefinite writer starvation by forcing the READER into the > slowpath once the WRITER attempts to acquire the lock. > > Reported-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> > Link: https://lore.kernel.org/877cwbq4cq.ffs@tglx > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> Acked-by: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx> Thanks Sebastian and Thomas! -- Mel Gorman SUSE Labs