Re: [PATCH-tip v2 02/10] locking/rwsem: Move owner setting code from rwsem.c to rwsem.h

From: Will Deacon
Date: Thu Feb 21 2019 - 09:15:32 EST


Hi Waiman,

On Fri, Feb 15, 2019 at 03:50:02PM -0500, Waiman Long wrote:
> Moves all the owner setting code closer to the rwsem-xadd fast paths
> directly within rwsem.h file.
>
> For __down_read() and __down_read_killable(), it is assumed that
> rwsem will be marked as reader-owned when the functions return. That
> is currently true except in the transient case that the waiter queue
> just becomes empty. So a rwsem_set_reader_owned() call is added for
> this case.

Sorry, but I'm having a really hard time understanding the paragraph
above. You make it sound like you're fixing a bug here, but that doesn't
appear to be the case. Please can you elaborate?

> The __rwsem_set_reader_owned() call in __rwsem_mark_wake()
> is now necessary.
>
> Signed-off-by: Waiman Long <longman@xxxxxxxxxx>
> ---
> kernel/locking/rwsem-xadd.c | 6 +++---
> kernel/locking/rwsem.c | 19 ++-----------------
> kernel/locking/rwsem.h | 17 +++++++++++++++--
> 3 files changed, 20 insertions(+), 22 deletions(-)

I personally find the existing code easier to read, but I don't know if
that's just because I'm used to it...

Will