diff options
Diffstat (limited to 'fs/btrfs/ctree.c')
| -rw-r--r-- | fs/btrfs/ctree.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index cbd3a7d6fa68..88d1b1eedc9c 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
| @@ -5376,6 +5376,8 @@ int btrfs_compare_trees(struct btrfs_root *left_root, | |||
| 5376 | int advance_right; | 5376 | int advance_right; | 
| 5377 | u64 left_blockptr; | 5377 | u64 left_blockptr; | 
| 5378 | u64 right_blockptr; | 5378 | u64 right_blockptr; | 
| 5379 | u64 left_gen; | ||
| 5380 | u64 right_gen; | ||
| 5379 | u64 left_start_ctransid; | 5381 | u64 left_start_ctransid; | 
| 5380 | u64 right_start_ctransid; | 5382 | u64 right_start_ctransid; | 
| 5381 | u64 ctransid; | 5383 | u64 ctransid; | 
| @@ -5640,7 +5642,14 @@ int btrfs_compare_trees(struct btrfs_root *left_root, | |||
| 5640 | right_blockptr = btrfs_node_blockptr( | 5642 | right_blockptr = btrfs_node_blockptr( | 
| 5641 | right_path->nodes[right_level], | 5643 | right_path->nodes[right_level], | 
| 5642 | right_path->slots[right_level]); | 5644 | right_path->slots[right_level]); | 
| 5643 | if (left_blockptr == right_blockptr) { | 5645 | left_gen = btrfs_node_ptr_generation( | 
| 5646 | left_path->nodes[left_level], | ||
| 5647 | left_path->slots[left_level]); | ||
| 5648 | right_gen = btrfs_node_ptr_generation( | ||
| 5649 | right_path->nodes[right_level], | ||
| 5650 | right_path->slots[right_level]); | ||
| 5651 | if (left_blockptr == right_blockptr && | ||
| 5652 | left_gen == right_gen) { | ||
| 5644 | /* | 5653 | /* | 
| 5645 | * As we're on a shared block, don't | 5654 | * As we're on a shared block, don't | 
| 5646 | * allow to go deeper. | 5655 | * allow to go deeper. | 
