On Thu, 2015-04-30 at 14:42 -0400, Waiman Long wrote: > I do have a question of what kind of tearing you are talking about. Do > you mean the tearing due to mm being changed in the middle of the > access? The reason why I don't like this kind of construct is that I am > not sure if > the address translation p->mm->numa_scan_seq is being done once or > twice. I looked at the compiled code and the translation is done only once. > > Anyway, the purpose of READ_ONCE and WRITE_ONCE is not for eliminating > data tearing. They are to make sure that the compiler won't compile away > data access and they are done in the order they appear in the program. I > don't think it is a good idea to associate tearing elimination with > those macros. So I would suggest removing the last sentence in your comment.
Yes, I can remove the last sentence in the comment since the main goal was to document that we're access this field without exclusive access. In terms of data tearing, an example would be the write operation gets split into multiple stores (though this is architecture dependent). The idea was that since we're modifying a seq variable without the write lock, we want to remove any forms of optimizations as mentioned above or unpredictable behavior, since READ_ONCE/WRITE_ONCE adds no overhead. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/