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))
|
if (btrfs_is_free_space_inode(inode))
|
||||||
flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_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,
|
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))
|
else if (btrfs_is_free_space_inode(inode))
|
||||||
flush = BTRFS_RESERVE_FLUSH_FREE_SPACE_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)
|
if (ret < 0)
|
||||||
return ret;
|
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
|
* 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.
|
* 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)
|
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;
|
int ret;
|
||||||
|
|
||||||
ASSERT(flush == BTRFS_RESERVE_FLUSH_DATA ||
|
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);
|
flush == BTRFS_RESERVE_NO_FLUSH);
|
||||||
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
|
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) {
|
if (ret == -ENOSPC) {
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info: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))
|
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;
|
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);
|
btrfs_try_granting_tickets(space_info->fs_info, space_info);
|
||||||
spin_unlock(&space_info->lock);
|
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);
|
enum btrfs_reserve_flush_enum flush);
|
||||||
void btrfs_dump_space_info_for_trans_abort(struct btrfs_fs_info *fs_info);
|
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);
|
void btrfs_init_async_reclaim_work(struct btrfs_fs_info *fs_info);
|
||||||
|
|||||||
Reference in New Issue
Block a user