[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251114062642.1524837-1-hch@lst.de>
Date: Fri, 14 Nov 2025 07:26:03 +0100
From: Christoph Hellwig <hch@....de>
To: Christian Brauner <brauner@...nel.org>
Cc: Al Viro <viro@...iv.linux.org.uk>,
David Sterba <dsterba@...e.com>,
Jan Kara <jack@...e.cz>,
Mike Marshall <hubcap@...ibond.com>,
Martin Brandenburg <martin@...ibond.com>,
Carlos Maiolino <cem@...nel.org>,
Stefan Roesch <shr@...com>,
Jeff Layton <jlayton@...nel.org>,
linux-kernel@...r.kernel.org,
linux-btrfs@...r.kernel.org,
gfs2@...ts.linux.dev,
io-uring@...r.kernel.org,
devel@...ts.orangefs.org,
linux-unionfs@...r.kernel.org,
linux-mtd@...ts.infradead.org,
linux-xfs@...r.kernel.org,
linux-nfs@...r.kernel.org
Subject: re-enable IOCB_NOWAIT writes to files
Hi all,
commit 66fa3cedf16a ("fs: Add async write file modification handling.")
effectively disabled IOCB_NOWAIT writes as timestamp updates currently
always require blocking, and the modern timestamp resolution means we
always update timestamps. This leads to a lot of context switches from
applications using io_uring to submit file writes, making it often worse
than using the legacy aio code that is not using IOCB_NOWAIT.
This series allows non-blocking updates for lazytime if the file system
supports it, and adds that support for XFS.
It also fixes the layering bypass in btrfs when updating timestamps on
device files for devices removed from btrfs usage, and FMODE_NOCMTIME
handling in the VFS now that nfsd started using it. Note that I'm still
not sure that nfsd usage is fully correct for all file systems, as only
XFS explicitly supports FMODE_NOCMTIME, but at least the generic code
does the right thing now.
Diffstat:
Documentation/filesystems/locking.rst | 2
Documentation/filesystems/vfs.rst | 6 ++
fs/btrfs/inode.c | 3 +
fs/btrfs/volumes.c | 11 +--
fs/fat/misc.c | 3 +
fs/fs-writeback.c | 53 ++++++++++++++----
fs/gfs2/inode.c | 6 +-
fs/inode.c | 100 +++++++++++-----------------------
fs/internal.h | 3 -
fs/orangefs/inode.c | 7 ++
fs/overlayfs/inode.c | 3 +
fs/sync.c | 4 -
fs/ubifs/file.c | 9 +--
fs/utimes.c | 1
fs/xfs/xfs_iops.c | 29 ++++++++-
fs/xfs/xfs_super.c | 29 ---------
include/linux/fs.h | 17 +++--
include/trace/events/writeback.h | 6 --
18 files changed, 152 insertions(+), 140 deletions(-)
Powered by blists - more mailing lists