]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs: allow error returns from generic_update_time
authorChristoph Hellwig <hch@lst.de>
Thu, 8 Jan 2026 14:19:02 +0000 (15:19 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 12 Jan 2026 13:01:32 +0000 (14:01 +0100)
Now that no caller looks at the updated flags, switch generic_update_time
to the same calling convention as the ->update_time method and return 0
or a negative errno.

This prepares for adding non-blocking timestamp updates that could return
-EAGAIN.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://patch.msgid.link/20260108141934.2052404-3-hch@lst.de
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/gfs2/inode.c
fs/inode.c
fs/ubifs/file.c
fs/xfs/xfs_iops.c
include/linux/fs.h

index 36618e35319965bd9aa0c4b4a3387a096de0b187..e08eb419347c36afa44b7f6a6ef9b92d001c1633 100644 (file)
@@ -2257,8 +2257,7 @@ static int gfs2_update_time(struct inode *inode, int flags)
                if (error)
                        return error;
        }
-       generic_update_time(inode, flags);
-       return 0;
+       return generic_update_time(inode, flags);
 }
 
 static const struct inode_operations gfs2_file_iops = {
index 07effa0cb9999c1765e9e4470650b3ca02d2ed66..7eb28dd45a5aeae479dc4cddec2c7ee79680a743 100644 (file)
@@ -2141,7 +2141,7 @@ EXPORT_SYMBOL(inode_update_timestamps);
  * or S_VERSION need to be updated we attempt to update all three of them. S_ATIME
  * updates can be handled done independently of the rest.
  *
- * Returns a S_* mask indicating which fields were updated.
+ * Returns a negative error value on error, else 0.
  */
 int generic_update_time(struct inode *inode, int flags)
 {
@@ -2153,7 +2153,7 @@ int generic_update_time(struct inode *inode, int flags)
        if (updated & S_VERSION)
                dirty_flags |= I_DIRTY_SYNC;
        __mark_inode_dirty(inode, dirty_flags);
-       return updated;
+       return 0;
 }
 EXPORT_SYMBOL(generic_update_time);
 
index c3265b8804f5f6243eeeab034a362c0e1088c2f1..ec1bb9f43accbb08e3ea3d8a091b718af2242ffa 100644 (file)
@@ -1379,10 +1379,8 @@ int ubifs_update_time(struct inode *inode, int flags)
                        .dirtied_ino_d = ALIGN(ui->data_len, 8) };
        int err, release;
 
-       if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT)) {
-               generic_update_time(inode, flags);
-               return 0;
-       }
+       if (!IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT))
+               return generic_update_time(inode, flags);
 
        err = ubifs_budget_space(c, &req);
        if (err)
index ad94fbf55014c637ab93d38bf4569c6a75b0236e..9dedb54e3cb04f873ab7677ec49e0a05f8d72911 100644 (file)
@@ -1197,10 +1197,8 @@ xfs_vn_update_time(
 
        if (inode->i_sb->s_flags & SB_LAZYTIME) {
                if (!((flags & S_VERSION) &&
-                     inode_maybe_inc_iversion(inode, false))) {
-                       generic_update_time(inode, flags);
-                       return 0;
-               }
+                     inode_maybe_inc_iversion(inode, false)))
+                       return generic_update_time(inode, flags);
 
                /* Capture the iversion update that just occurred */
                log_flags |= XFS_ILOG_CORE;
index 294e4c0b5aa80277cb647bef9d5bb4078a4df575..0983df0d0705e6cc303d699a3b75579266f50fe2 100644 (file)
@@ -2399,7 +2399,7 @@ extern void ihold(struct inode * inode);
 extern void iput(struct inode *);
 void iput_not_last(struct inode *);
 int inode_update_timestamps(struct inode *inode, int flags);
-int generic_update_time(struct inode *, int);
+int generic_update_time(struct inode *inode, int flags);
 
 /* /sys/fs */
 extern struct kobject *fs_kobj;