Re: [PATCH] fs/direct-io: avoid data race on ->s_dio_done_wq
From: Eric Biggers <ebiggers@kernel.org>
Date: 2020-07-16 03:19:43
Also in:
linux-fsdevel, linux-xfs
On Thu, Jul 16, 2020 at 03:47:17AM +0100, Matthew Wilcox wrote:
On Thu, Jul 16, 2020 at 11:46:56AM +1000, Dave Chinner wrote:quoted
And why should we compromise performance on hundreds of millions of modern systems to fix an extremely rare race on an extremely rare platform that maybe only a hundred people world-wide might still use?I thought that wasn't the argument here. It was that some future compiler might choose to do something absolutely awful that no current compiler does, and that rather than disable the stupid "optimisation", we'd be glad that we'd already stuffed the source code up so that it lay within some tortuous reading of the C spec.
There are actually many reasons to avoid data races; see https://github.com/google/ktsan/wiki/READ_ONCE-and-WRITE_ONCE
The memory model is just too complicated. Look at the recent exchange between myself & Dan Williams. I spent literally _hours_ trying to figure out what rules to follow. https://lore.kernel.org/linux-mm/CAPcyv4jgjoLqsV+aHGJwGXbCSwbTnWLmog5-rxD2i31vZ2rDNQ@mail.gmail.com/ (local) https://lore.kernel.org/linux-mm/CAPcyv4j2+7XiJ9BXQ4mj_XN0N+rCyxch5QkuZ6UsOBsOO1+2Vg@mail.gmail.com/ (local) Neither Dan nor I are exactly "new" to Linux kernel development. As Dave is saying here, having to understand the memory model is too high a bar. Hell, I don't know if what we ended up with for v4 is actually correct. It lokos good to me, but *shrug* https://lore.kernel.org/linux-mm/159009507306.847224.8502634072429766747.stgit@dwillia2-desk3.amr.corp.intel.com/ (local)
Yes, it's too complicated. I'm not sure there's much of a solution, though. Of course, we also have easy-to-use synchronization primitives like mutex, spinlock, rw_semaphore, etc. The problems arise when people think they know better and try to write something more "optimized". We need to have a higher bar for accepting changes where the memory model is a concern at all. - Eric