Messages in this thread | | | Date | Thu, 28 Mar 2013 16:33:03 -0400 | From | Rik van Riel <> | Subject | Re: [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>
| |