• Christoph Hellwig's avatar
    xfs: fix bogus space reservation in xfs_iomap_write_allocate · 0af32fb4
    Christoph Hellwig authored
    The space reservations was without an explaination in commit
    
        "Add error reporting calls in error paths that return EFSCORRUPTED"
    
    back in 2003.  There is no reason to reserve disk blocks in the
    transaction when allocating blocks for delalloc space as we already
    reserved the space when creating the delalloc extent.
    
    With this fix we stop running out of the reserved pool in
    generic/229, which has happened for long time with small blocksize
    file systems, and has increased in severity with the new buffered
    write path.
    
    [ dchinner: we still need to pass the block reservation into
      xfs_bmapi_write() to ensure we don't deadlock during AG selection.
      See commit dbd5c8c9 ("xfs: pass total block res. as total
      xfs_bmapi_write() parameter") for more details on why this is
      necessary. ]
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    
    0af32fb4
xfs_iomap.c 29.8 KB