[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20251223225316.GA26676@lst.de>
Date: Tue, 23 Dec 2025 23:53:16 +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: re-enable IOCB_NOWAIT writes to files v4
Julia found a nice little typo in the new changes, which really
wants me to split the atime from c/mtime update path badly. So
don't feel rushed to review this version and enjoy the holidays,
there will be a new one soon.
On Tue, Dec 23, 2025 at 09:37:43AM +0900, Christoph Hellwig wrote:
> 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.
>
> Changes since v3:
> - fix was_dirty_time handling in __mark_inode_dirty for the racy flag
> update case
> - refactor inode_update_timestamps to make the lazytime vs blocking
> logical more clear
> - allow non-blocking timestamp updates for fat
>
> Changes since v2:
> - drop patches merged upstream
> - adjust for the inode state accesors
> - keep a check in __writeback_single_inode instead of exercising
> potentially undefined behavior
> - more spelling fixes
>
> 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 | 8 +-
> fs/fs-writeback.c | 33 +++++++---
> fs/gfs2/inode.c | 6 +
> fs/inode.c | 111 +++++++++++++++++++++-------------
> fs/internal.h | 3
> fs/nfs/inode.c | 4 -
> fs/orangefs/inode.c | 5 +
> fs/overlayfs/inode.c | 2
> fs/sync.c | 4 -
> fs/ubifs/file.c | 13 ++-
> fs/xfs/xfs_iops.c | 34 +++++++++-
> fs/xfs/xfs_super.c | 29 --------
> include/linux/fs.h | 27 ++++++--
> include/trace/events/writeback.h | 6 -
> 16 files changed, 182 insertions(+), 111 deletions(-)
---end quoted text---
Powered by blists - more mailing lists