Re: re-enable IOCB_NOWAIT writes to files v4

Christoph Hellwig <[email protected]>
Newsgroups dev.linux.lists.gfs2,org.infradead.lists.linux-mtd,org.kernel.vger.io-uring,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs
Message-ID <[email protected]>
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---
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.