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

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to