diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 8e69b5acfeff..30a5094fffa7 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -721,12 +721,14 @@ out: | |||
721 | 721 | ||
722 | u32 btrfs_count_snapshots_in_path(struct btrfs_root *root, | 722 | u32 btrfs_count_snapshots_in_path(struct btrfs_root *root, |
723 | struct btrfs_path *count_path, | 723 | struct btrfs_path *count_path, |
724 | u64 expected_owner, | ||
724 | u64 first_extent) | 725 | u64 first_extent) |
725 | { | 726 | { |
726 | struct btrfs_root *extent_root = root->fs_info->extent_root; | 727 | struct btrfs_root *extent_root = root->fs_info->extent_root; |
727 | struct btrfs_path *path; | 728 | struct btrfs_path *path; |
728 | u64 bytenr; | 729 | u64 bytenr; |
729 | u64 found_objectid; | 730 | u64 found_objectid; |
731 | u64 found_owner; | ||
730 | u64 root_objectid = root->root_key.objectid; | 732 | u64 root_objectid = root->root_key.objectid; |
731 | u32 total_count = 0; | 733 | u32 total_count = 0; |
732 | u32 cur_count; | 734 | u32 cur_count; |
@@ -792,6 +794,13 @@ again: | |||
792 | total_count = 2; | 794 | total_count = 2; |
793 | goto out; | 795 | goto out; |
794 | } | 796 | } |
797 | if (level == -1) { | ||
798 | found_owner = btrfs_ref_objectid(l, ref_item); | ||
799 | if (found_owner != expected_owner) { | ||
800 | total_count = 2; | ||
801 | goto out; | ||
802 | } | ||
803 | } | ||
795 | total_count = 1; | 804 | total_count = 1; |
796 | path->slots[0]++; | 805 | path->slots[0]++; |
797 | } | 806 | } |