Commit 155725c9 authored by Jan Schmidt's avatar Jan Schmidt
Browse files

Btrfs: leave critical region in btrfs_find_all_roots as soon as possible



When delayed refs exist, btrfs_find_all_roots used to hold the delayed ref
mutex way longer than actually required. We ought to drop it immediately
after we're done collecting all the delayed refs.

Signed-off-by: default avatarJan Schmidt <list.btrfs@jan-o-sch.net>
parent c3e06965
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -839,6 +839,7 @@ again:
			}
			ret = __add_delayed_refs(head, delayed_ref_seq,
						 &prefs_delayed);
			mutex_unlock(&head->mutex);
			if (ret) {
				spin_unlock(&delayed_refs->lock);
				goto out;
@@ -932,8 +933,6 @@ again:
	}

out:
	if (head)
		mutex_unlock(&head->mutex);
	btrfs_free_path(path);
	while (!list_empty(&prefs)) {
		ref = list_first_entry(&prefs, struct __prelim_ref, list);