Commit 57f2d209 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Reduce would_deadlock restarts



We don't have to take locks in any particular ordering - we'll make
forward progress just fine - but if we try to stick to an ordering, it
can help to avoid excessive would_deadlock transaction restarts.

This tweaks the reflink path to take extents btree locks in the right
order.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 5b14ce35
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -486,6 +486,13 @@ s64 bch2_remap_range(struct bch_fs *c,

		bch2_btree_iter_set_snapshot(&dst_iter, dst_snapshot);

		if (dst_inum.inum < src_inum.inum) {
			/* Avoid some lock cycle transaction restarts */
			ret = bch2_btree_iter_traverse(&dst_iter);
			if (ret)
				continue;
		}

		dst_done = dst_iter.pos.offset - dst_start.offset;
		src_want = POS(src_start.inode, src_start.offset + dst_done);
		bch2_btree_iter_set_pos(&src_iter, src_want);