Btrfs: try committing transaction before returning ENOSPC
authorJosef Bacik <jbacik@redhat.com>
Fri, 20 Feb 2009 15:59:53 +0000 (10:59 -0500)
committerChris Mason <chris.mason@oracle.com>
Fri, 20 Feb 2009 15:59:53 +0000 (10:59 -0500)
commit4e06bdd6cbd5105376e7caf4e683ed131e777389
tree20a7b891f7f8f518eb2cd81234e0c9ab5902c6c3
parent6a63209fc02d5483371f07e4913ee8abad608051
Btrfs: try committing transaction before returning ENOSPC

This fixes a problem where we could return -ENOSPC when we may actually have
plenty of space, the space is just pinned.  Instead of returning -ENOSPC
immediately, commit the transaction first and then try and do the allocation
again.

This patch also does chunk allocation for metadata if we pass the 80%
threshold for metadata space.  This will help with stack usage since the chunk
allocation will happen early on, instead of when the allocation is happening.

Signed-off-by: Josef Bacik <jbacik@redhat.com>
fs/btrfs/extent-tree.c