mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-18 02:36:56 +00:00
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 <wangsl.fnst@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
This commit is contained in:
parent
387d5f3234
commit
52ddfa74fe
@ -1197,6 +1197,7 @@ open_ctree_with_broken_chunk(struct recover_control *rc)
|
||||
fprintf(stderr, "Failed to allocate memory for fs_info\n");
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
fs_info->is_chunk_recover = 1;
|
||||
|
||||
fs_info->fs_devices = rc->fs_devices;
|
||||
ret = btrfs_open_devices(fs_info->fs_devices, O_RDWR);
|
||||
|
1
ctree.h
1
ctree.h
@ -973,6 +973,7 @@ struct btrfs_fs_info {
|
||||
int system_allocs;
|
||||
int readonly;
|
||||
int on_restoring;
|
||||
int is_chunk_recover;
|
||||
int (*free_extent_hook)(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root,
|
||||
u64 bytenr, u64 num_bytes, u64 parent,
|
||||
|
@ -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++) {
|
||||
|
Loading…
Reference in New Issue
Block a user