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 5989a92236f..2854c824ab6 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,  	em = lookup_extent_mapping(em_tree, chunk_start, 1);  	read_unlock(&em_tree->lock); -	BUG_ON(!em || em->start != chunk_start); +	if (!em) { +		printk(KERN_ERR "btrfs: couldn't find em for chunk %Lu\n", +		       chunk_start); +		return -EIO; +	} + +	if (em->start != chunk_start) { +		printk(KERN_ERR "btrfs: bad chunk start, em=%Lu, wanted=%Lu\n", +		       em->start, chunk_start); +		free_extent_map(em); +		return -EIO; +	}  	map = (struct map_lookup *)em->bdev;  	length = em->len;  |