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