• Josef Bacik's avatar
    btrfs: loop in inode_rsv_refill · 5df11363
    Josef Bacik authored
    With severe fragmentation we can end up with our inode rsv size being
    huge during writeout, which would cause us to need to make very large
    metadata reservations.
    
    However we may not actually need that much once writeout is complete,
    because of the over-reservation for the worst case.
    
    So instead try to make our reservation, and if we couldn't make it
    re-calculate our new reservation size and try again.  If our reservation
    size doesn't change between tries then we know we are actually out of
    space and can error. Flushing that could have been running in parallel
    did not make any space.
    Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
    [ rename to calc_refill_bytes, update comment and changelog ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    5df11363
extent-tree.c 315 KB