From 52ddfa74fe191dd8ec23702be2aac3f76f86e4d3 Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Thu, 28 Nov 2013 13:32:49 +0800 Subject: Btrfs-progs: chunk-recover: add new flag to prepare recovering for ordered data chunk When reading block groups we will searching it's corresponding chunk, however, at this time, some chunks has not been built(data chunks raid0/raid10/raid56), don't bug_on here, we will try to rebuild these chunks later. Signed-off-by: Wang Shilong Signed-off-by: David Sterba Signed-off-by: Chris Mason --- volumes.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'volumes.c') diff --git a/volumes.c b/volumes.c index c38da6cc..bd012704 100644 --- a/volumes.c +++ b/volumes.c @@ -1496,8 +1496,15 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset) int readonly = 0; int i; + /* + * During chunk recovering, we may fail to find block group's + * corresponding chunk, we will rebuild it later + */ ce = search_cache_extent(&map_tree->cache_tree, chunk_offset); - BUG_ON(!ce); + if (!root->fs_info->is_chunk_recover) + BUG_ON(!ce); + else + return 0; map = container_of(ce, struct map_lookup, ce); for (i = 0; i < map->num_stripes; i++) { -- cgit v1.2.3