On Mon, Feb 29, 2016 at 09:29:29AM -0500, Brian Foster wrote:
> xfs_bunmapi() currently updates the icsb fdblocks counter, unreserves
> quota, etc. before the extent is deleted by xfs_bmap_del_extent(). The
> function has problems dividing up the indirect reserved blocks for
> scenarios where a single delalloc extent is split in two. Particularly,
> there aren't always enough blocks reserved for multiple extents in a
> single extent reservation.
>
> The solution to this problem is to allow the extent removal code to
> steal from the deleted extent to meet indirect reservation requirements.
> Move the block of code in xfs_bmapi() that updates the icsb fdblocks
> counter to after the call to xfs_bmap_del_extent() to allow the codepath
> to update the extent record before the free blocks are accounted. Also,
> reshuffle the code slightly so the delalloc accounting occurs near the
> xfs_bmap_del_extent() call to provide context for the comments.
>
> Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx>
Looks fine,
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
|