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

Commit 467bb1d2 authored by Wang Shilong's avatar Wang Shilong Committed by Chris Mason
Browse files

Btrfs: make sure we cleanup all reloc roots if error happens



I hit an oops when merging reloc roots fails, the reason is that
new reloc roots may be added and we should make sure we cleanup
all reloc roots.

Signed-off-by: default avatarWang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: default avatarChris Mason <clm@fb.com>
parent 66463748
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2409,6 +2409,13 @@ out:
		btrfs_std_error(root->fs_info, ret);
		if (!list_empty(&reloc_roots))
			free_reloc_roots(&reloc_roots);

		/* new reloc root may be added */
		mutex_lock(&root->fs_info->reloc_mutex);
		list_splice_init(&rc->reloc_roots, &reloc_roots);
		mutex_unlock(&root->fs_info->reloc_mutex);
		if (!list_empty(&reloc_roots))
			free_reloc_roots(&reloc_roots);
	}

	BUG_ON(!RB_EMPTY_ROOT(&rc->reloc_root_tree.rb_root));