• D
    xfs: remove dest file's post-eof preallocations before reflinking · 5c989a0e
    Darrick J. Wong 提交于
    If we try to reflink into a file with post-eof preallocations at an
    offset well past the preallocations, we increase i_size as one would
    expect.  However, those allocations do not have page cache backing them,
    so they won't get cleaned out on their own.  This leads to asserts in
    the collapse/insert range code and xfs_destroy_inode when they encounter
    delalloc extents they weren't expecting to find.
    
    Since there are plenty of other places where we dump those post-eof
    blocks, do the same to the reflink destination file before we start
    remapping extents.  This was found by adding clonerange support to
    fsstress and running it in write-only mode.
    Signed-off-by: NDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    5c989a0e
xfs_reflink.c 43.1 KB