• Darrick J. Wong's avatar
    xfs: make _bmap_count_blocks consistent wrt delalloc extent behavior · d29cb3e4
    Darrick J. Wong authored
    There is an inconsistency in the way that _bmap_count_blocks deals with
    delalloc reservations -- if the specified fork is in extents format,
    *count is set to the total number of blocks referenced by the in-core
    fork, including delalloc extents.  However, if the fork is in btree
    format, *count is set to the number of blocks referenced by the on-disk
    fork, which does /not/ include delalloc extents.
    
    For the lone existing caller of _bmap_count_blocks this hasn't been an
    issue because the function is only used to count xattr fork blocks
    (where there aren't any delalloc reservations).  However, when scrub
    comes along it will use this same function to check di_nblocks against
    both on-disk extent maps, so we need this behavior to be consistent.
    
    Therefore, fix _bmap_count_leaves not to include delalloc extents and
    remove unnecessary parameters.
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    d29cb3e4
xfs_bmap_util.c 55.7 KB