Re: [RFC] metadata updates vs. fetches (was Re: [PATCH v4] fs: Fix data race in inode_set_ctime_to_ts)

From: Matthew Wilcox
Date: Sun Nov 24 2024 - 20:15:15 EST


On Sun, Nov 24, 2024 at 04:53:39PM -0800, Linus Torvalds wrote:
> On Sun, 24 Nov 2024 at 15:53, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
> Look, let's write 5.000950, 6.000150 and 7.000950, while there is a
> single reader (and let's assume these are all properly ordered reads
> and writes):
>
> W1.s 5
> W1.ns 950
> W2.s 6
> R.ns (950)
> R.s (6)
> W2.ns 150
> W3.s 7
> W3.ns 950
> R.ns (950)
>
> and look how the reader is happy, because it got the same nanoseconds
> twice. But the reader thinks it had a time of 6.000950, and AT NO
> POINT was that actually a valid time.

I literally said that.

"Now we have a time of 6:950 which is never a time that this file had,
but it's intermediate in time between two times that the file _did_
have, so it won't break make."