diff options
Diffstat (limited to 'fs/btrfs/volumes.c')
| -rw-r--r-- | fs/btrfs/volumes.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 5989a92236f7..2854c824ab64 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
| @@ -4935,7 +4935,18 @@ int btrfs_rmap_block(struct btrfs_mapping_tree *map_tree, | |||
| 4935 | em = lookup_extent_mapping(em_tree, chunk_start, 1); | 4935 | em = lookup_extent_mapping(em_tree, chunk_start, 1); |
| 4936 | read_unlock(&em_tree->lock); | 4936 | read_unlock(&em_tree->lock); |
| 4937 | 4937 | ||
| 4938 | BUG_ON(!em || em->start != chunk_start); | 4938 | if (!em) { |
| 4939 | printk(KERN_ERR "btrfs: couldn't find em for chunk %Lu\n", | ||
| 4940 | chunk_start); | ||
| 4941 | return -EIO; | ||
| 4942 | } | ||
| 4943 | |||
| 4944 | if (em->start != chunk_start) { | ||
| 4945 | printk(KERN_ERR "btrfs: bad chunk start, em=%Lu, wanted=%Lu\n", | ||
| 4946 | em->start, chunk_start); | ||
| 4947 | free_extent_map(em); | ||
| 4948 | return -EIO; | ||
| 4949 | } | ||
| 4939 | map = (struct map_lookup *)em->bdev; | 4950 | map = (struct map_lookup *)em->bdev; |
| 4940 | 4951 | ||
| 4941 | length = em->len; | 4952 | length = em->len; |
