lkml.org 
[lkml]   [2023]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH v2] locking/rwbase: Prevent indefinite writer starvation
On 2023-01-20 13:24:41 [+0000], Mel Gorman wrote:
> --- a/kernel/locking/rwbase_rt.c
> +++ b/kernel/locking/rwbase_rt.c
> @@ -264,12 +291,17 @@ static int __sched rwbase_write_lock(struct rwbase_rt *rwb,
> if (__rwbase_write_trylock(rwb))
> break;
>
> + /* Record timeout when reader bias is ignored. */
> + rwb->waiter_timeout = jiffies + RWBASE_RT_WAIT_TIMEOUT;
rwb->waiter_timeout = (jiffies + RWBASE_RT_WAIT_TIMEOUT) | 1;

There is the unlikely case that (jiffies + RWBASE_RT_WAIT_TIMEOUT) = 0
on 32bit where it is not jiffies64.

Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>

> +
> raw_spin_unlock_irqrestore(&rtm->wait_lock, flags);
> rwbase_schedule();
> raw_spin_lock_irqsave(&rtm->wait_lock, flags);
>
> set_current_state(state);
> }
> +
> + rwb->waiter_timeout = 0;
> rwbase_restore_current_state();
> trace_contention_end(rwb, 0);

Sebastian

\
 
 \ /
  Last update: 2023-03-26 23:49    [W:0.072 / U:0.320 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site