• Chandan Babu R's avatar
    xfs: Introduce error injection to allocate only minlen size extents for files · 30151967
    Chandan Babu R authored
    This commit adds XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT error tag which
    helps userspace test programs to get xfs_bmap_btalloc() to always
    allocate minlen sized extents.
    
    This is required for test programs which need a guarantee that minlen
    extents allocated for a file do not get merged with their existing
    neighbours in the inode's BMBT. "Inode fork extent overflow check" for
    Directories, Xattrs and extension of realtime inodes need this since the
    file offset at which the extents are being allocated cannot be
    explicitly controlled from userspace.
    
    One way to use this error tag is to,
    1. Consume all of the free space by sequentially writing to a file.
    2. Punch alternate blocks of the file. This causes CNTBT to contain
       sufficient number of one block sized extent records.
    3. Inject XFS_ERRTAG_BMAP_ALLOC_MINLEN_EXTENT error tag.
    After step 3, xfs_bmap_btalloc() will issue space allocation
    requests for minlen sized extents only.
    
    ENOSPC error code is returned to userspace when there aren't any "one
    block sized" extents left in any of the AGs.
    Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: default avatarChandan Babu R <chandanrlinux@gmail.com>
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    30151967
xfs_error.c 12.3 KB