summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/backref.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-01-12 22:33:16 +0100
committerTakashi Iwai <tiwai@suse.de>2015-01-12 22:33:16 +0100
commit7bfb8575b82cd1facde3dc5be2b125f408171646 (patch)
tree9df1049fe7491df41efe02109b7192334881176c /fs/btrfs/backref.c
parent6c869d301bda3f672f001e2c9fcb01685000fc83 (diff)
parent61864d844c296933d40c02683252bbea5193b101 (diff)
downloadop-kernel-dev-7bfb8575b82cd1facde3dc5be2b125f408171646.zip
op-kernel-dev-7bfb8575b82cd1facde3dc5be2b125f408171646.tar.gz
Merge branch 'topic/line6' into for-next
Diffstat (limited to 'fs/btrfs/backref.c')
-rw-r--r--fs/btrfs/backref.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
index 2d3e32e..8729cf6 100644
--- a/fs/btrfs/backref.c
+++ b/fs/btrfs/backref.c
@@ -1552,7 +1552,6 @@ int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb,
{
int ret;
int type;
- struct btrfs_tree_block_info *info;
struct btrfs_extent_inline_ref *eiref;
if (*ptr == (unsigned long)-1)
@@ -1573,9 +1572,17 @@ int tree_backref_for_extent(unsigned long *ptr, struct extent_buffer *eb,
}
/* we can treat both ref types equally here */
- info = (struct btrfs_tree_block_info *)(ei + 1);
*out_root = btrfs_extent_inline_ref_offset(eb, eiref);
- *out_level = btrfs_tree_block_level(eb, info);
+
+ if (key->type == BTRFS_EXTENT_ITEM_KEY) {
+ struct btrfs_tree_block_info *info;
+
+ info = (struct btrfs_tree_block_info *)(ei + 1);
+ *out_level = btrfs_tree_block_level(eb, info);
+ } else {
+ ASSERT(key->type == BTRFS_METADATA_ITEM_KEY);
+ *out_level = (u8)key->offset;
+ }
if (ret == 1)
*ptr = (unsigned long)-1;
OpenPOWER on IntegriCloud