mirror of https://gitee.com/openkylin/linux.git
Btrfs: Fix NULL block groups on reading the inode
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
edbd8d4efe
commit
e52ec0eb62
|
@ -1630,11 +1630,11 @@ int btrfs_alloc_extent(struct btrfs_trans_handle *trans,
|
||||||
struct btrfs_path *path;
|
struct btrfs_path *path;
|
||||||
|
|
||||||
btrfs_set_stack_extent_refs(&extent_item, 1);
|
btrfs_set_stack_extent_refs(&extent_item, 1);
|
||||||
|
#if 0
|
||||||
new_hint = max(hint_byte, 16ULL * 1024 * 1024 * 1024);
|
new_hint = max(hint_byte, 16ULL * 1024 * 1024 * 1024);
|
||||||
if (new_hint < btrfs_super_total_bytes(&info->super_copy))
|
if (new_hint < btrfs_super_total_bytes(&info->super_copy))
|
||||||
hint_byte = new_hint;
|
hint_byte = new_hint;
|
||||||
|
#endif
|
||||||
WARN_ON(num_bytes < root->sectorsize);
|
WARN_ON(num_bytes < root->sectorsize);
|
||||||
ret = find_free_extent(trans, root, num_bytes, empty_size,
|
ret = find_free_extent(trans, root, num_bytes, empty_size,
|
||||||
search_start, search_end, hint_byte, ins,
|
search_start, search_end, hint_byte, ins,
|
||||||
|
|
|
@ -402,6 +402,10 @@ void btrfs_read_locked_inode(struct inode *inode)
|
||||||
BTRFS_I(inode)->block_group = btrfs_lookup_block_group(root->fs_info,
|
BTRFS_I(inode)->block_group = btrfs_lookup_block_group(root->fs_info,
|
||||||
alloc_group_block);
|
alloc_group_block);
|
||||||
|
|
||||||
|
if (!BTRFS_I(inode)->block_group) {
|
||||||
|
BTRFS_I(inode)->block_group = btrfs_find_block_group(root,
|
||||||
|
NULL, 0, 0, 0);
|
||||||
|
}
|
||||||
btrfs_free_path(path);
|
btrfs_free_path(path);
|
||||||
inode_item = NULL;
|
inode_item = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue