mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-29 12:28:27 +02:00
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: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user