Segfault hidden in list.h
Quoted 6 lines · In article <[email protected]> Linus…
Quoted 2 lines · David S. Miller
However, if the list manipulation had some memory barriers added to it...
That would just make _those_ much slower, with some very doubtful end results.
I agree. In most cases, list.h macros will be used under lock and putting barriers there will penalize the common case.
Quoted 8 lines
Show me numbers, and show me readable source, and show me a proof that the memory ordering actually works, and I may consider lockless algorithms worthwhile. As it is, they are damn fragile and require more care that I personally care to expect out of 99.9% of all programmers.
And I'm sure as hell not going to put any lockless stuff in functions meant for "normal human consumption". If we create list macros like that, they had better be called "lockless_list_add_be_damn_careful_about_it()" rather than "list_add()".
It isn't really necessary to to put memeory barriers in list macros for use with RCU. In many data structures, list traversal is done in only one direction and therefore memory barriers can be put after list_add() or such macros. If indeed traversal is more complicated than that, it might not be a good idea to do lockfree traversal in the first place.
As for readable lockless algorithms, sure they exist. See
http://prdownloads.sourceforge.net/lse/rt_rcu-2.5.3-1.patch.
Thanks
Signature · 2 lines
Dipankar Sarma <[email protected]> http://lse.sourceforge.net Linux Technology Center, IBM Software Lab, Bangalore, India.