Re: [PATCH 07/14] fs: return a negative error from generic_update_time

Jan Kara <[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-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs
Message-ID <6epbyvds7hmypmk6qfsmnvevbnt2msdbudknnn3ryx6szl5lwn@a2ydspgd2cd6>
On Fri 14-11-25 07:26:10, Christoph Hellwig wrote:
> 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 <[email protected]>

Looks good. Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

								Honza

> ---
>  fs/gfs2/inode.c    | 3 +--
>  fs/inode.c         | 6 +++---
>  fs/ubifs/file.c    | 6 ++----
>  fs/xfs/xfs_iops.c  | 6 ++----
>  include/linux/fs.h | 2 +-
>  5 files changed, 9 insertions(+), 14 deletions(-)
> 
> diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
> index 8a7ed80d9f2d..601c14a3ac77 100644
> --- a/fs/gfs2/inode.c
> +++ b/fs/gfs2/inode.c
> @@ -2242,8 +2242,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 = {
> diff --git a/fs/inode.c b/fs/inode.c
> index d3edcc5baec9..74e672dd90aa 100644
> --- a/fs/inode.c
> +++ b/fs/inode.c
> @@ -2091,7 +2091,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)
>  {
> @@ -2103,7 +2103,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);
>  
> @@ -2335,7 +2335,7 @@ static int file_update_time_flags(struct file *file, unsigned int flags)
>  	if (inode->i_op->update_time)
>  		ret = inode->i_op->update_time(inode, sync_mode);
>  	else
> -		generic_update_time(inode, sync_mode);
> +		ret = generic_update_time(inode, sync_mode);
>  	mnt_put_write_access_file(file);
>  	return ret;
>  }
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index ca41ce8208c4..3e119cb93ea9 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -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)
> diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
> index caff0125faea..0ace5f790006 100644
> --- a/fs/xfs/xfs_iops.c
> +++ b/fs/xfs/xfs_iops.c
> @@ -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;
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index a09cebdb4881..c1077ae7c6b2 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2823,7 +2823,7 @@ extern int current_umask(void);
>  extern void ihold(struct inode * inode);
>  extern void iput(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;
> -- 
> 2.47.3
> 
-- 
Jan Kara <[email protected]>
SUSE Labs, CR
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.