Btrfs: don't add extent 0 to the free space cache v2
If block group 0 is completely free, btrfs_read_block_groups will add extent [0, BTRFS_SUPER_INFO_OFFSET) to the free space cache. Signed-off-by: Yan Zheng <zheng.yan@oracle.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
86b9f2eca5
commit
06b2331f83
1 changed files with 9 additions and 1 deletions
|
@ -195,6 +195,14 @@ static int exclude_super_stripes(struct btrfs_root *root,
|
|||
int stripe_len;
|
||||
int i, nr, ret;
|
||||
|
||||
if (cache->key.objectid < BTRFS_SUPER_INFO_OFFSET) {
|
||||
stripe_len = BTRFS_SUPER_INFO_OFFSET - cache->key.objectid;
|
||||
cache->bytes_super += stripe_len;
|
||||
ret = add_excluded_extent(root, cache->key.objectid,
|
||||
stripe_len);
|
||||
BUG_ON(ret);
|
||||
}
|
||||
|
||||
for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) {
|
||||
bytenr = btrfs_sb_offset(i);
|
||||
ret = btrfs_rmap_block(&root->fs_info->mapping_tree,
|
||||
|
@ -255,7 +263,7 @@ static u64 add_new_free_space(struct btrfs_block_group_cache *block_group,
|
|||
if (ret)
|
||||
break;
|
||||
|
||||
if (extent_start == start) {
|
||||
if (extent_start <= start) {
|
||||
start = extent_end + 1;
|
||||
} else if (extent_start > start && extent_start < end) {
|
||||
size = extent_start - start;
|
||||
|
|
Loading…
Reference in a new issue