Re: [PATCH 1/2] xfs: evict CoW fork extents when performing finsert/fcollapse

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

 



On Mon, Sep 04, 2017 at 08:49:41AM -0700, Darrick J. Wong wrote:
> When we perform an finsert/fcollapse operation, cancel all the CoW
> extents for the affected file offset range so that they don't end up
> pointing to the wrong blocks.
> 
> Reported-by: Amir Goldstein <amir73il@xxxxxxxxx>
> Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

Looks good

Reviewed-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx>

> ---
>  fs/xfs/xfs_bmap_util.c |   14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
> index cd9a540..bc6c6e1 100644
> --- a/fs/xfs/xfs_bmap_util.c
> +++ b/fs/xfs/xfs_bmap_util.c
> @@ -1459,7 +1459,19 @@ xfs_shift_file_space(
>  		return error;
>  
>  	/*
> -	 * The extent shiting code works on extent granularity. So, if
> +	 * Clean out anything hanging around in the cow fork now that
> +	 * we've flushed all the dirty data out to disk to avoid having
> +	 * CoW extents at the wrong offsets.
> +	 */
> +	if (xfs_is_reflink_inode(ip)) {
> +		error = xfs_reflink_cancel_cow_range(ip, offset, NULLFILEOFF,
> +				true);
> +		if (error)
> +			return error;
> +	}
> +
> +	/*
> +	 * The extent shifting code works on extent granularity. So, if
>  	 * stop_fsb is not the starting block of extent, we need to split
>  	 * the extent at stop_fsb.
>  	 */
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Carlos
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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