• Shida Zhang's avatar
    xfs: trim the mapp array accordingly in xfs_da_grow_inode_int · 44159659
    Shida Zhang authored
    Take a look at the for-loop in xfs_da_grow_inode_int:
    ======
    for(){
            nmap = min(XFS_BMAP_MAX_NMAP, count);
            ...
            error = xfs_bmapi_write(...,&mapp[mapi], &nmap);//(..., $1, $2)
            ...
            mapi += nmap;
    }
    =====
    where $1 stands for the start address of the array,
    while $2 is used to indicate the size of the array.
    
    The array $1 will advance by $nmap in each iteration after
    the allocation of extents.
    But the size $2 still remains unchanged, which is determined by
    min(XFS_BMAP_MAX_NMAP, count).
    
    It seems that it has forgotten to trim the mapp array after each
    iteration, so change it.
    Signed-off-by: default avatarShida Zhang <zhangshida@kylinos.cn>
    Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    44159659
xfs_da_btree.c 70.8 KB