mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
btrfs: pass btrfs_space_info to btrfs_reserve_data_bytes()
Pass struct btrfs_space_info to btrfs_reserve_data_bytes() to allow reserving the data from multiple data space_info candidates. This is a preparation for the following commits and there is no functional change. Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
66864101d1
commit
5d39fda880
@@ -123,7 +123,7 @@ int btrfs_alloc_data_chunk_ondemand(const struct btrfs_inode *inode, u64 bytes)
|
||||
if (btrfs_is_free_space_inode(inode))
|
||||
flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE;
|
||||
|
||||
return btrfs_reserve_data_bytes(fs_info, bytes, flush);
|
||||
return btrfs_reserve_data_bytes(fs_info->data_sinfo, bytes, flush);
|
||||
}
|
||||
|
||||
int btrfs_check_data_free_space(struct btrfs_inode *inode,
|
||||
@@ -144,7 +144,7 @@ int btrfs_check_data_free_space(struct btrfs_inode *inode,
|
||||
else if (btrfs_is_free_space_inode(inode))
|
||||
flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE;
|
||||
|
||||
ret = btrfs_reserve_data_bytes(fs_info, len, flush);
|
||||
ret = btrfs_reserve_data_bytes(fs_info->data_sinfo, len, flush);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -1836,10 +1836,10 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
|
||||
* This will reserve bytes from the data space info. If there is not enough
|
||||
* space then we will attempt to flush space as specified by flush.
|
||||
*/
|
||||
int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
|
||||
int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
|
||||
enum btrfs_reserve_flush_enum flush)
|
||||
{
|
||||
struct btrfs_space_info *data_sinfo = fs_info->data_sinfo;
|
||||
struct btrfs_fs_info *fs_info = space_info->fs_info;
|
||||
int ret;
|
||||
|
||||
ASSERT(flush == BTRFS_RESERVE_FLUSH_DATA ||
|
||||
@@ -1847,12 +1847,12 @@ int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
|
||||
flush == BTRFS_RESERVE_NO_FLUSH);
|
||||
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
|
||||
|
||||
ret = __reserve_bytes(fs_info, data_sinfo, bytes, flush);
|
||||
ret = __reserve_bytes(fs_info, space_info, bytes, flush);
|
||||
if (ret == -ENOSPC) {
|
||||
trace_btrfs_space_reservation(fs_info, "space_info:enospc",
|
||||
data_sinfo->flags, bytes, 1);
|
||||
space_info->flags, bytes, 1);
|
||||
if (btrfs_test_opt(fs_info, ENOSPC_DEBUG))
|
||||
btrfs_dump_space_info(fs_info, data_sinfo, bytes, 0);
|
||||
btrfs_dump_space_info(fs_info, space_info, bytes, 0);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ static inline void btrfs_space_info_free_bytes_may_use(
|
||||
btrfs_try_granting_tickets(space_info->fs_info, space_info);
|
||||
spin_unlock(&space_info->lock);
|
||||
}
|
||||
int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
|
||||
int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
|
||||
enum btrfs_reserve_flush_enum flush);
|
||||
void btrfs_dump_space_info_for_trans_abort(struct btrfs_fs_info *fs_info);
|
||||
void btrfs_init_async_reclaim_work(struct btrfs_fs_info *fs_info);
|
||||
|
||||
Reference in New Issue
Block a user