aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/btrfs/delayed-ref.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c
index b7a0641ead77..116abec7a29c 100644
--- a/fs/btrfs/delayed-ref.c
+++ b/fs/btrfs/delayed-ref.c
@@ -40,16 +40,19 @@ struct kmem_cache *btrfs_delayed_extent_op_cachep;
40 * compare two delayed tree backrefs with same bytenr and type 40 * compare two delayed tree backrefs with same bytenr and type
41 */ 41 */
42static int comp_tree_refs(struct btrfs_delayed_tree_ref *ref2, 42static int comp_tree_refs(struct btrfs_delayed_tree_ref *ref2,
43 struct btrfs_delayed_tree_ref *ref1) 43 struct btrfs_delayed_tree_ref *ref1, int type)
44{ 44{
45 if (ref1->root < ref2->root) 45 if (type == BTRFS_TREE_BLOCK_REF_KEY) {
46 return -1; 46 if (ref1->root < ref2->root)
47 if (ref1->root > ref2->root) 47 return -1;
48 return 1; 48 if (ref1->root > ref2->root)
49 if (ref1->parent < ref2->parent) 49 return 1;
50 return -1; 50 } else {
51 if (ref1->parent > ref2->parent) 51 if (ref1->parent < ref2->parent)
52 return 1; 52 return -1;
53 if (ref1->parent > ref2->parent)
54 return 1;
55 }
53 return 0; 56 return 0;
54} 57}
55 58
@@ -113,7 +116,8 @@ static int comp_entry(struct btrfs_delayed_ref_node *ref2,
113 if (ref1->type == BTRFS_TREE_BLOCK_REF_KEY || 116 if (ref1->type == BTRFS_TREE_BLOCK_REF_KEY ||
114 ref1->type == BTRFS_SHARED_BLOCK_REF_KEY) { 117 ref1->type == BTRFS_SHARED_BLOCK_REF_KEY) {
115 return comp_tree_refs(btrfs_delayed_node_to_tree_ref(ref2), 118 return comp_tree_refs(btrfs_delayed_node_to_tree_ref(ref2),
116 btrfs_delayed_node_to_tree_ref(ref1)); 119 btrfs_delayed_node_to_tree_ref(ref1),
120 ref1->type);
117 } else if (ref1->type == BTRFS_EXTENT_DATA_REF_KEY || 121 } else if (ref1->type == BTRFS_EXTENT_DATA_REF_KEY ||
118 ref1->type == BTRFS_SHARED_DATA_REF_KEY) { 122 ref1->type == BTRFS_SHARED_DATA_REF_KEY) {
119 return comp_data_refs(btrfs_delayed_node_to_data_ref(ref2), 123 return comp_data_refs(btrfs_delayed_node_to_data_ref(ref2),