From: Trond Myklebust <trondmy@hammerspace.com>
To: "torvalds@linux-foundation.org" <torvalds@linux-foundation.org>
Cc: "hughd@google.com" <hughd@google.com>,
"josef@toxicpanda.com" <josef@toxicpanda.com>,
"jstultz@google.com" <jstultz@google.com>,
"brauner@kernel.org" <brauner@kernel.org>,
"linux-xfs@vger.kernel.org" <linux-xfs@vger.kernel.org>,
"djwong@kernel.org" <djwong@kernel.org>,
"clm@fb.com" <clm@fb.com>,
"chandan.babu@oracle.com" <chandan.babu@oracle.com>,
"david@fromorbit.com" <david@fromorbit.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"dsterba@suse.com" <dsterba@suse.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"jlayton@kernel.org" <jlayton@kernel.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>,
"tytso@mit.edu" <tytso@mit.edu>,
"viro@zeniv.linux.org.uk" <viro@zeniv.linux.org.uk>,
"jack@suse.cz" <jack@suse.cz>,
"linux-ext4@vger.kernel.org" <linux-ext4@vger.kernel.org>,
"amir73il@gmail.com" <amir73il@gmail.com>,
"linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
"adilger.kernel@dilger.ca" <adilger.kernel@dilger.ca>,
"kent.overstreet@linux.dev" <kent.overstreet@linux.dev>,
"sboyd@kernel.org" <sboyd@kernel.org>,
"dhowells@redhat.com" <dhowells@redhat.com>,
"jack@suse.de" <jack@suse.de>
Subject: Re: [PATCH RFC 2/9] timekeeping: new interfaces for multigrain timestamp handing
Date: Wed, 1 Nov 2023 22:45:29 +0000 [thread overview]
Message-ID: <5ef49a42e95a5cb1a0ce77766c13e9f227cb446e.camel@hammerspace.com> (raw)
In-Reply-To: <CAHk-=wi+cVOE3VmJzN3C6TFepszCkrXeAFJY6b7bK=vV493rzQ@mail.gmail.com>
On Wed, 2023-11-01 at 12:23 -1000, Linus Torvalds wrote:
> On Wed, Nov 1, 2023, 11:35 Trond Myklebust <trondmy@hammerspace.com>
> wrote:
> >
> > My client writes to the file and immediately reads the ctime. A 3rd
> > party client then writes immediately after my ctime read.
> > A reboot occurs (maybe minutes later), then I re-read the ctime,
> > and
> > get the same value as before the 3rd party write.
> >
> > Yes, most of the time that is better than the naked ctime, but not
> > across a reboot.
>
> Ahh, I knew I was missing something.
>
> But I think it's fixable, with an additional rule:
>
> - when generating STATX_CHANGE_COOKIE, if the ctime matches the
> current time and the ctime counter is zero, set the ctime counter to
> 1.
>
> That means that you will have *spurious* cache invalidations of such
> cached data after a reboot, but only for reads that happened right
> after the file was written.
Presumably it will also happen if the file gets kicked out of cache on
the server, since that will cause the I_VERSION_QUERIED flag and any
other in-memory metadata to be lost.
>
> Now, it's obviously not unheard of to finish writing a file, and then
> immediately reading the results again.
>
> But at least those caches should be somewhat limited (and the problem
> then only happens when the nfs server is rebooted).
>
> I *assume* that the whole thundering herd issue with lots of clients
> tends to be for stable files, not files that were just written and
> then immediately cached?
>
> I dunno. I'm sure there's still some thinko here.
Close-to-open cache consistency means that the client is usually
expected to check the change attribute (or ctime) on file close and
file open. So it is not uncommon for it to have to revalidate the cache
not long after finishing writing the file. Of course, it is rare to
have another client interject with another write to the same file just
a few microseconds after it was closed, however it is extremely common
for that sort of behaviour to occur with directories.
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@hammerspace.com
next prev parent reply other threads:[~2023-11-01 22:45 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-18 17:41 [PATCH RFC 0/9] fs: multigrain timestamps (redux) Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 1/9] fs: switch timespec64 fields in inode to discrete integers Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 2/9] timekeeping: new interfaces for multigrain timestamp handing Jeff Layton
2023-10-18 19:18 ` Linus Torvalds
2023-10-18 20:47 ` Jeff Layton
2023-10-18 21:31 ` Linus Torvalds
2023-10-18 21:52 ` Jeff Layton
2023-10-19 9:29 ` Christian Brauner
2023-10-19 11:28 ` Jeff Layton
2023-10-19 22:02 ` Dave Chinner
2023-10-20 12:12 ` Jeff Layton
2023-10-20 20:06 ` Linus Torvalds
2023-10-20 20:20 ` Linus Torvalds
2023-10-20 21:05 ` Jeff Layton
2023-10-22 22:17 ` Dave Chinner
2023-10-23 14:45 ` Jeff Layton
2023-10-23 23:26 ` Dave Chinner
2023-10-24 0:18 ` Linus Torvalds
2023-10-24 3:40 ` Dave Chinner
2023-10-24 4:10 ` Linus Torvalds
2023-10-24 7:08 ` Amir Goldstein
2023-10-24 18:40 ` Jeff Layton
2023-10-25 8:05 ` Dave Chinner
2023-10-25 10:41 ` Amir Goldstein
2023-10-25 12:25 ` Jeff Layton
2023-10-26 2:20 ` Dave Chinner
2023-10-26 5:42 ` Amir Goldstein
2023-10-27 10:35 ` Jeff Layton
2023-10-30 22:37 ` Dave Chinner
2023-10-30 23:11 ` Linus Torvalds
2023-10-31 1:42 ` Dave Chinner
2023-10-31 7:03 ` Amir Goldstein
2023-10-31 10:30 ` Christian Brauner
2023-10-31 11:29 ` Jeff Layton
2023-10-31 21:57 ` Dave Chinner
2023-10-31 23:02 ` Darrick J. Wong
2023-10-31 23:47 ` Dave Chinner
2023-11-01 10:16 ` Jan Kara
2023-11-01 11:38 ` Amir Goldstein
2023-11-02 10:17 ` Jeff Layton
2023-11-01 20:10 ` Linus Torvalds
2023-11-01 21:34 ` Trond Myklebust
2023-11-01 22:23 ` Linus Torvalds
2023-11-01 22:45 ` Trond Myklebust [this message]
2023-11-01 23:29 ` Dave Chinner
2023-11-02 10:29 ` Jeff Layton
2023-11-02 10:15 ` Jeff Layton
2023-10-31 23:12 ` Darrick J. Wong
2023-11-01 8:08 ` Amir Goldstein
2023-10-31 11:26 ` Jeff Layton
2023-10-31 19:43 ` John Stoffel
2023-10-31 11:04 ` Jeff Layton
2023-10-31 12:22 ` Jan Kara
2023-10-31 12:55 ` Jeff Layton
2023-10-30 23:34 ` ronnie sahlberg
2023-10-24 14:24 ` Jeff Layton
2023-10-24 19:06 ` Jeff Layton
2023-10-24 19:40 ` Linus Torvalds
2023-10-24 20:19 ` Jeff Layton
2023-10-31 10:26 ` Christian Brauner
2023-10-31 13:55 ` Jeff Layton
2023-10-19 22:00 ` Thomas Gleixner
2023-10-19 22:41 ` Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 3/9] timekeeping: add new debugfs file to count multigrain timestamps Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 4/9] fs: add infrastructure for " Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 5/9] fs: have setattr_copy handle multigrain timestamps appropriately Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 6/9] xfs: switch to multigrain timestamps Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 7/9] ext4: " Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 8/9] btrfs: convert " Jeff Layton
2023-10-18 17:41 ` [PATCH RFC 9/9] tmpfs: add support for " Jeff Layton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5ef49a42e95a5cb1a0ce77766c13e9f227cb446e.camel@hammerspace.com \
--to=trondmy@hammerspace.com \
--cc=adilger.kernel@dilger.ca \
--cc=akpm@linux-foundation.org \
--cc=amir73il@gmail.com \
--cc=brauner@kernel.org \
--cc=chandan.babu@oracle.com \
--cc=clm@fb.com \
--cc=david@fromorbit.com \
--cc=dhowells@redhat.com \
--cc=djwong@kernel.org \
--cc=dsterba@suse.com \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=jack@suse.de \
--cc=jlayton@kernel.org \
--cc=josef@toxicpanda.com \
--cc=jstultz@google.com \
--cc=kent.overstreet@linux.dev \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=sboyd@kernel.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox