• Josef Bacik's avatar
    Btrfs: fix enospc problems when deleting a subvol · 5a24e84c
    Josef Bacik authored
    Subvol delete is a special kind of awful where we use the global reserve to
    cover the ENOSPC requirements.  The problem is once we're done removing
    everything we do a btrfs_update_inode(), which by default will try to do the
    delayed update stuff which will use it's own reserve.  There will be no
    space in this reserve and we'll return ENOSPC.  So instead use
    btrfs_update_inode_fallback() which will just fallback to updating the inode
    item in the case of enospc.  This is fine because the global reserve covers
    the space requirements for this.  With this patch I can now delete a subvol
    on a problem image Dave Sterba sent me.  Thanks,
    Reported-by: default avatarDavid Sterba <dave@jikos.cz>
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    Signed-off-by: default avatarChris Mason <chris.mason@fusionio.com>
    5a24e84c
inode.c 203 KB