Btrfs: return ENOSPC when target space is full
In extent-tree.c:do_chunk_alloc(), early on we returned 0 (success) when the target space was full and when chunk allocation is needed. However, later on in that same function we return ENOSPC if btrfs_alloc_chunk() fails (and chunk allocation was needed) and set the space's full flag. This was inconsistent, as -ENOSPC should be returned if the space is full and a chunk allocation needs to performed. If the space is full but no chunk allocation is needed, just return 0 (success). Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com> Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
This commit is contained in:
parent
ada9af215c
commit
09fb99a696
|
@ -3836,8 +3836,12 @@ again:
|
|||
if (force < space_info->force_alloc)
|
||||
force = space_info->force_alloc;
|
||||
if (space_info->full) {
|
||||
if (should_alloc_chunk(extent_root, space_info, force))
|
||||
ret = -ENOSPC;
|
||||
else
|
||||
ret = 0;
|
||||
spin_unlock(&space_info->lock);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!should_alloc_chunk(extent_root, space_info, force)) {
|
||||
|
|
Loading…
Reference in New Issue