> 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 ;) So let me know what you think. _______________________________________________ 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
