On Sun, Aug 27, 2023 at 09:28:31PM +0800, Hao Xu wrote: > From: Hao Xu <howeyxu@xxxxxxxxxxx> > > Add a boolean parameter for file_accessed() to support nowait semantics. > Currently it is true only with io_uring as its initial caller. > > Signed-off-by: Hao Xu <howeyxu@xxxxxxxxxxx> > --- > arch/s390/hypfs/inode.c | 2 +- > block/fops.c | 2 +- > fs/btrfs/file.c | 2 +- > fs/btrfs/inode.c | 2 +- > fs/coda/dir.c | 4 ++-- > fs/ext2/file.c | 4 ++-- > fs/ext4/file.c | 6 +++--- > fs/f2fs/file.c | 4 ++-- > fs/fuse/dax.c | 2 +- > fs/fuse/file.c | 4 ++-- > fs/gfs2/file.c | 2 +- > fs/hugetlbfs/inode.c | 2 +- > fs/nilfs2/file.c | 2 +- > fs/orangefs/file.c | 2 +- > fs/orangefs/inode.c | 2 +- > fs/pipe.c | 2 +- > fs/ramfs/file-nommu.c | 2 +- > fs/readdir.c | 2 +- > fs/smb/client/cifsfs.c | 2 +- > fs/splice.c | 2 +- > fs/ubifs/file.c | 2 +- > fs/udf/file.c | 2 +- > fs/xfs/xfs_file.c | 6 +++--- > fs/zonefs/file.c | 4 ++-- > include/linux/fs.h | 5 +++-- > mm/filemap.c | 8 ++++---- > mm/shmem.c | 6 +++--- > 27 files changed, 43 insertions(+), 42 deletions(-) > > diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c > index ee919bfc8186..55f562027c4f 100644 > --- a/arch/s390/hypfs/inode.c > +++ b/arch/s390/hypfs/inode.c > @@ -157,7 +157,7 @@ static ssize_t hypfs_read_iter(struct kiocb *iocb, struct iov_iter *to) > if (!count) > return -EFAULT; > iocb->ki_pos = pos + count; > - file_accessed(file); > + file_accessed(file, false); Why? If all you do is skip atime update anyway then just add something like: bool file_needs_atime(struct file *file) { return !(file->f_flags & O_NOATIME) && atime_needs_update(&file->f_path, d_inode(path->dentry)); } and then if (file_needs_atime(file) && IOURING_WANTS_ASYNC) return -EAGAIN; instead of touching all this code.