Btrfs: fix how we do delalloc reservations and how we free reservations on error