Skip to content

Commit

Permalink
btrfs: return allocated block group from do_chunk_alloc()
Browse files Browse the repository at this point in the history
Return the allocated block group from do_chunk_alloc(). This is a
preparation patch for the next patch.

CC: [email protected] # 5.16+
Reviewed-by: Johannes Thumshirn <[email protected]>
Tested-by: Johannes Thumshirn <[email protected]>
Signed-off-by: Naohiro Aota <[email protected]>
Signed-off-by: David Sterba <[email protected]>
  • Loading branch information
naota authored and kdave committed Apr 5, 2022
1 parent a690e5f commit 820c363
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions fs/btrfs/block-group.c
Original file line number Diff line number Diff line change
Expand Up @@ -3451,7 +3451,7 @@ int btrfs_force_chunk_alloc(struct btrfs_trans_handle *trans, u64 type)
return btrfs_chunk_alloc(trans, alloc_flags, CHUNK_ALLOC_FORCE);
}

static int do_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags)
static struct btrfs_block_group *do_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags)
{
struct btrfs_block_group *bg;
int ret;
Expand Down Expand Up @@ -3538,7 +3538,11 @@ static int do_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags)
out:
btrfs_trans_release_chunk_metadata(trans);

return ret;
if (ret)
return ERR_PTR(ret);

btrfs_get_block_group(bg);
return bg;
}

/*
Expand Down Expand Up @@ -3653,6 +3657,7 @@ int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
{
struct btrfs_fs_info *fs_info = trans->fs_info;
struct btrfs_space_info *space_info;
struct btrfs_block_group *ret_bg;
bool wait_for_alloc = false;
bool should_alloc = false;
int ret = 0;
Expand Down Expand Up @@ -3746,9 +3751,14 @@ int btrfs_chunk_alloc(struct btrfs_trans_handle *trans, u64 flags,
force_metadata_allocation(fs_info);
}

ret = do_chunk_alloc(trans, flags);
ret_bg = do_chunk_alloc(trans, flags);
trans->allocating_chunk = false;

if (IS_ERR(ret_bg))
ret = PTR_ERR(ret_bg);
else
btrfs_put_block_group(ret_bg);

spin_lock(&space_info->lock);
if (ret < 0) {
if (ret == -ENOSPC)
Expand Down

0 comments on commit 820c363

Please sign in to comment.