[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251120064859.2911749-1-hch@lst.de>
Date: Thu, 20 Nov 2025 07:47:21 +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,
linux-fsdevel@...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 v2
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.
Changes since v1:
- more regular numbering of the S_* flags
- fix XFS to actually not block
- don't ignore the generic_update_time return value in
file_update_time_flags
- fix the sync_lazytime return value
- fix an out of data comment in btrfs
- fix a race that would update i_version before returning -EAGAIN in XFS
Diffstat:
Documentation/filesystems/locking.rst | 2
Documentation/filesystems/vfs.rst | 6 +
fs/btrfs/inode.c | 15 ++-
fs/btrfs/volumes.c | 11 --
fs/fat/misc.c | 3
fs/fs-writeback.c | 56 ++++++++++---
fs/gfs2/inode.c | 6 -
fs/inode.c | 143 ++++++++++++++++------------------
fs/internal.h | 3
fs/nfs/inode.c | 4
fs/orangefs/inode.c | 10 ++
fs/overlayfs/inode.c | 3
fs/sync.c | 4
fs/ubifs/file.c | 11 +-
fs/utimes.c | 1
fs/xfs/xfs_iops.c | 35 +++++++-
fs/xfs/xfs_super.c | 29 ------
include/linux/fs.h | 19 ++--
include/trace/events/writeback.h | 6 -
19 files changed, 209 insertions(+), 158 deletions(-)
Powered by blists - more mailing lists