lkml.org 
[lkml]   [2013]   [Mar]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 05/13] rwsem: simplify rwsem_down_write_failed
On 03/15/2013 06:54 AM, Michel Lespinasse wrote:
> When waking writers, we never grant them the lock - instead, they have
> to acquire it themselves when they run, and remove themselves from the
> wait_list when they succeed.
>
> As a result, we can do a few simplifications in rwsem_down_write_failed():
>
> - We don't need to check for !waiter.task since __rwsem_do_wake() doesn't
> remove writers from the wait_list
>
> - There is no point releaseing the wait_lock before entering the wait loop,
> as we will need to reacquire it immediately. We can change the loop so
> that the lock is always held at the start of each loop iteration.
>
> - We don't need to get a reference on the task structure, since the task
> is responsible for removing itself from the wait_list. There is no risk,
> like in the rwsem_down_read_failed() case, that a task would wake up and
> exit (thus destroying its task structure) while __rwsem_do_wake() is
> still running - wait_lock protects against that.
>
> Signed-off-by: Michel Lespinasse <walken@google.com>

Reviewed-by: Rik van Riel <riel@redhat.com>



\
 
 \ /
  Last update: 2013-03-28 22:21    [W:0.130 / U:0.600 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site