Re: [PATCH v1.1 3/5] xfs: set prealloc flag in xfs_alloc_file_space()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 31, 2022 at 06:02:26PM +1100, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> Now that we only call xfs_update_prealloc_flags() from
> xfs_file_fallocate() in the case where we need to set the
> preallocation flag, do this in xfs_alloc_file_space() where we
> already have the inode joined into a transaction and get
> rid of the call to xfs_update_prealloc_flags() from the fallocate
> code.
> 
> This also means that we now correctly avoid setting the
> XFS_DIFLAG_PREALLOC flag when xfs_is_always_cow_inode() is true, as
> these inodes will never have preallocated extents.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>

Aha, there's the @flags elision.

Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> ---
> V1.1
> - fix whitespace damage
> - remove redundant comments in xfs_alloc_file_space().
> 
>  fs/xfs/xfs_bmap_util.c | 9 +++------
>  fs/xfs/xfs_file.c      | 8 --------
>  2 files changed, 3 insertions(+), 14 deletions(-)
> 
> diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
> index d4a387d3d0ce..eb2e387ba528 100644
> --- a/fs/xfs/xfs_bmap_util.c
> +++ b/fs/xfs/xfs_bmap_util.c
> @@ -850,9 +850,6 @@ xfs_alloc_file_space(
>  			rblocks = 0;
>  		}
>  
> -		/*
> -		 * Allocate and setup the transaction.
> -		 */
>  		error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write,
>  				dblocks, rblocks, false, &tp);
>  		if (error)
> @@ -869,9 +866,9 @@ xfs_alloc_file_space(
>  		if (error)
>  			goto error;
>  
> -		/*
> -		 * Complete the transaction
> -		 */
> +		ip->i_diflags |= XFS_DIFLAG_PREALLOC;
> +		xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
> +
>  		error = xfs_trans_commit(tp);
>  		xfs_iunlock(ip, XFS_ILOCK_EXCL);
>  		if (error)
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 223996822d84..ae6f5b15a023 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -908,7 +908,6 @@ xfs_file_fallocate(
>  	struct inode		*inode = file_inode(file);
>  	struct xfs_inode	*ip = XFS_I(inode);
>  	long			error;
> -	enum xfs_prealloc_flags	flags = 0;
>  	uint			iolock = XFS_IOLOCK_EXCL | XFS_MMAPLOCK_EXCL;
>  	loff_t			new_size = 0;
>  	bool			do_file_insert = false;
> @@ -1006,8 +1005,6 @@ xfs_file_fallocate(
>  		}
>  		do_file_insert = true;
>  	} else {
> -		flags |= XFS_PREALLOC_SET;
> -
>  		if (!(mode & FALLOC_FL_KEEP_SIZE) &&
>  		    offset + len > i_size_read(inode)) {
>  			new_size = offset + len;
> @@ -1057,11 +1054,6 @@ xfs_file_fallocate(
>  			if (error)
>  				goto out_unlock;
>  		}
> -
> -		error = xfs_update_prealloc_flags(ip, XFS_PREALLOC_SET);
> -		if (error)
> -			goto out_unlock;
> -
>  	}
>  
>  	/* Change file size if needed */
> -- 
> Dave Chinner
> david@xxxxxxxxxxxxx



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux