mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
btrfs: fix incorrect comparison for delayed refs
When I reworked delayed ref comparison incf4f04325b
("btrfs: move ->parent and ->ref_root into btrfs_delayed_ref_node"), I made a mistake and returned -1 for the case where ref1->ref_root was > than ref2->ref_root. This is a subtle bug that can result in improper delayed ref running order, which can result in transaction aborts. Fixes:cf4f04325b
("btrfs: move ->parent and ->ref_root into btrfs_delayed_ref_node") CC: stable@vger.kernel.org # 6.10+ Reviewed-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
2b084d8205
commit
7d493a5ecc
@ -298,7 +298,7 @@ static int comp_refs(struct btrfs_delayed_ref_node *ref1,
|
||||
if (ref1->ref_root < ref2->ref_root)
|
||||
return -1;
|
||||
if (ref1->ref_root > ref2->ref_root)
|
||||
return -1;
|
||||
return 1;
|
||||
if (ref1->type == BTRFS_EXTENT_DATA_REF_KEY)
|
||||
ret = comp_data_refs(ref1, ref2);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user