Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06789384 authored by Liu Bo's avatar Liu Bo Committed by Chris Mason
Browse files

Btrfs: do not abort transaction in prealloc case



During disk balance, we prealloc new file extent for file data relocation,
but we may fail in 'no available space' case, and it leads to flipping btrfs
into readonly.

It is not necessary to bail out and abort transaction since we do have several
ways to rescue ourselves from ENOSPC case.

Signed-off-by: default avatarLiu Bo <liubo2009@cn.fujitsu.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent 83eea1f1
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -5748,7 +5748,11 @@ static noinline int find_free_extent(struct btrfs_trans_handle *trans,
				ret = do_chunk_alloc(trans, root, num_bytes +
						     2 * 1024 * 1024, data,
						     CHUNK_ALLOC_LIMITED);
				if (ret < 0) {
				/*
				 * Do not bail out on ENOSPC since we
				 * can do more things.
				 */
				if (ret < 0 && ret != -ENOSPC) {
					btrfs_abort_transaction(trans,
								root, ret);
					goto out;