From: Trond Myklebust <trondmy@kernel.org>
To: Matthew Wilcox <willy@infradead.org>
Cc: Anna Schumaker <anna@kernel.org>,
linux-nfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Mike Snitzer <snitzer@kernel.org>
Subject: Re: [PATCH v3 2/2] NFS: Enable the RWF_DONTCACHE flag for the NFS client
Date: Mon, 18 Aug 2025 09:49:47 -0700 [thread overview]
Message-ID: <c3d5dead2b76161ba96187b85497e55a8a01032a.camel@kernel.org> (raw)
In-Reply-To: <aKNNkFJ3mt0svnyw@casper.infradead.org>
On Mon, 2025-08-18 at 16:58 +0100, Matthew Wilcox wrote:
> On Mon, Aug 18, 2025 at 08:56:31AM -0700, Trond Myklebust wrote:
> > On Mon, 2025-08-18 at 16:21 +0100, Matthew Wilcox wrote:
> > > I don't think this technique is "safe". By clearing the flag
> > > early,
> > > the page cache can't see that a folio that was created by
> > > dropbehind
> > > has now been reused and should have its dropbehind flag cleared.
> > > So
> > > we
> > > might see pages dropped from the cache that really should not be.
> >
> > The only alternative would be to add back in a helper in
> > mm/filemap.c
> > that does the normal folio_end_writeback() routine, but ignores the
> > dropbehind flag. (folio_end_writeback_ignore_dropbehind()?)
>
> Can you remind me why we clear the writeback flag as soon as the
> WRITE
> completes instead of leaving it set until the COMMIT completes?
It's about reducing latency.
An unstable WRITE is typically a quick operation because it only
requires the server to cache the data.
COMMIT requires persistence, and so it is typically slower.
Furthermore, the intention of COMMIT is to also allow the batching of
writeback on the server, so that disk wakeup and seeks are minimised.
While that is probably much less of a concern with modern SSDs vs older
hard drives, the NFS client design has to cater to both.
So by clearing the writeback flag after the WRITE, we allow operations
that want to further modify a specific folio to proceed without having
to wait for persistence of the entire batch.
More importantly, it also speeds up stat() calls, since we can retrieve
the updated mtime+ctime values from the server as soon as the WRITEs
are complete, without having to wait for COMMIT.
--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trondmy@kernel.org, trond.myklebust@hammerspace.com
next prev parent reply other threads:[~2025-08-18 16:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-18 14:39 [PATCH v3 0/2] Initial NFS client support for RWF_DONTCACHE Trond Myklebust
2025-08-18 14:39 ` [PATCH v3 1/2] filemap: Add a helper for filesystems implementing dropbehind Trond Myklebust
2025-08-18 14:51 ` Matthew Wilcox
2025-08-18 15:59 ` Trond Myklebust
2025-08-18 16:08 ` Matthew Wilcox
2025-08-18 14:39 ` [PATCH v3 2/2] NFS: Enable the RWF_DONTCACHE flag for the NFS client Trond Myklebust
2025-08-18 15:21 ` Matthew Wilcox
2025-08-18 15:56 ` Trond Myklebust
2025-08-18 15:58 ` Matthew Wilcox
2025-08-18 16:49 ` Trond Myklebust [this message]
2025-08-18 17:04 ` Matthew Wilcox
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=c3d5dead2b76161ba96187b85497e55a8a01032a.camel@kernel.org \
--to=trondmy@kernel.org \
--cc=anna@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=snitzer@kernel.org \
--cc=willy@infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).