[ofa-general] [Fwd: [PATCH] ib: release locks in the proper order]

Steven Rostedt srostedt at redhat.com
Wed Oct 8 20:20:16 PDT 2008


Roland Dreier wrote:
>  > The problem arised with RT.  RT converts spin_locks and rwlocks as
>  > well as rwsems into priority inheritance mutexes. With rwlocks and
>  > rwsems it becomes a bit more complex, since they can have multiple
>  > owners. To accomplish this, the tasks have an array field of all
>  > reader locks (rwlocks or sems) that they hold. But the unlock expected
>  > the last taken lock to be released, to keep the array clean (just
>  > decrement the length).
>
> I see -- basically this is an internal implementation quirk of how RT
> handles rwsems.  Sort of like the way spin_lock_irqsave() and
> spin_unlock_irqrestore() used to have to be in the same function, with a
> local flags variable, because of strange details of the sparc architecture.
>
> I'm actually OK with applying this patch because of that implementation
> quirk, assuming that it helps with the RT tree, and assuming someone is
> actually using this codepath with the RT patch applied and getting
> bitten by this in practice.  But I'm even more OK with dropping the
> patch if you're going to fix this RT quirk anyway ;)
>   

We found this quirk from someone reporting hitting it in the ib driver ;-)

but ...
> So let me know what you think.
>   
I just fixed the quirk. You can drop the patch.

Thanks,

-- Steve




More information about the general mailing list