btrfs: move the space info update macro to space-info.h
Also rename it to btrfs_space_info_update_* so it's clear what we're updating. Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
41783ef24d
commit
bb96c4e574
|
@ -32,26 +32,6 @@
|
||||||
|
|
||||||
#undef SCRAMBLE_DELAYED_REFS
|
#undef SCRAMBLE_DELAYED_REFS
|
||||||
|
|
||||||
/*
|
|
||||||
* Declare a helper function to detect underflow of various space info members
|
|
||||||
*/
|
|
||||||
#define DECLARE_SPACE_INFO_UPDATE(name) \
|
|
||||||
static inline void update_##name(struct btrfs_fs_info *fs_info, \
|
|
||||||
struct btrfs_space_info *sinfo, \
|
|
||||||
s64 bytes) \
|
|
||||||
{ \
|
|
||||||
lockdep_assert_held(&sinfo->lock); \
|
|
||||||
trace_update_##name(fs_info, sinfo, sinfo->name, bytes); \
|
|
||||||
if (bytes < 0 && sinfo->name < -bytes) { \
|
|
||||||
WARN_ON(1); \
|
|
||||||
sinfo->name = 0; \
|
|
||||||
return; \
|
|
||||||
} \
|
|
||||||
sinfo->name += bytes; \
|
|
||||||
}
|
|
||||||
|
|
||||||
DECLARE_SPACE_INFO_UPDATE(bytes_may_use);
|
|
||||||
DECLARE_SPACE_INFO_UPDATE(bytes_pinned);
|
|
||||||
|
|
||||||
static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
|
static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
|
||||||
struct btrfs_delayed_ref_node *node, u64 parent,
|
struct btrfs_delayed_ref_node *node, u64 parent,
|
||||||
|
@ -4054,7 +4034,7 @@ commit_trans:
|
||||||
data_sinfo->flags, bytes, 1);
|
data_sinfo->flags, bytes, 1);
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
}
|
}
|
||||||
update_bytes_may_use(fs_info, data_sinfo, bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, data_sinfo, bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
data_sinfo->flags, bytes, 1);
|
data_sinfo->flags, bytes, 1);
|
||||||
spin_unlock(&data_sinfo->lock);
|
spin_unlock(&data_sinfo->lock);
|
||||||
|
@ -4107,7 +4087,7 @@ void btrfs_free_reserved_data_space_noquota(struct inode *inode, u64 start,
|
||||||
|
|
||||||
data_sinfo = fs_info->data_sinfo;
|
data_sinfo = fs_info->data_sinfo;
|
||||||
spin_lock(&data_sinfo->lock);
|
spin_lock(&data_sinfo->lock);
|
||||||
update_bytes_may_use(fs_info, data_sinfo, -len);
|
btrfs_space_info_update_bytes_may_use(fs_info, data_sinfo, -len);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
data_sinfo->flags, len, 0);
|
data_sinfo->flags, len, 0);
|
||||||
spin_unlock(&data_sinfo->lock);
|
spin_unlock(&data_sinfo->lock);
|
||||||
|
@ -4947,13 +4927,15 @@ static int __reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
|
||||||
* If not things get more complicated.
|
* If not things get more complicated.
|
||||||
*/
|
*/
|
||||||
if (used + orig_bytes <= space_info->total_bytes) {
|
if (used + orig_bytes <= space_info->total_bytes) {
|
||||||
update_bytes_may_use(fs_info, space_info, orig_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, space_info,
|
||||||
|
orig_bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
space_info->flags, orig_bytes, 1);
|
space_info->flags, orig_bytes, 1);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else if (btrfs_can_overcommit(fs_info, space_info, orig_bytes, flush,
|
} else if (btrfs_can_overcommit(fs_info, space_info, orig_bytes, flush,
|
||||||
system_chunk)) {
|
system_chunk)) {
|
||||||
update_bytes_may_use(fs_info, space_info, orig_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, space_info,
|
||||||
|
orig_bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
space_info->flags, orig_bytes, 1);
|
space_info->flags, orig_bytes, 1);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
@ -5282,7 +5264,7 @@ again:
|
||||||
flush = BTRFS_RESERVE_FLUSH_ALL;
|
flush = BTRFS_RESERVE_FLUSH_ALL;
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
update_bytes_may_use(fs_info, space_info, -num_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, space_info, -num_bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
space_info->flags, num_bytes, 0);
|
space_info->flags, num_bytes, 0);
|
||||||
spin_unlock(&space_info->lock);
|
spin_unlock(&space_info->lock);
|
||||||
|
@ -5310,8 +5292,8 @@ again:
|
||||||
ticket->bytes, 1);
|
ticket->bytes, 1);
|
||||||
list_del_init(&ticket->list);
|
list_del_init(&ticket->list);
|
||||||
num_bytes -= ticket->bytes;
|
num_bytes -= ticket->bytes;
|
||||||
update_bytes_may_use(fs_info, space_info,
|
btrfs_space_info_update_bytes_may_use(fs_info,
|
||||||
ticket->bytes);
|
space_info, ticket->bytes);
|
||||||
ticket->bytes = 0;
|
ticket->bytes = 0;
|
||||||
space_info->tickets_id++;
|
space_info->tickets_id++;
|
||||||
wake_up(&ticket->wait);
|
wake_up(&ticket->wait);
|
||||||
|
@ -5319,7 +5301,8 @@ again:
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
space_info->flags,
|
space_info->flags,
|
||||||
num_bytes, 1);
|
num_bytes, 1);
|
||||||
update_bytes_may_use(fs_info, space_info, num_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info,
|
||||||
|
space_info, num_bytes);
|
||||||
ticket->bytes -= num_bytes;
|
ticket->bytes -= num_bytes;
|
||||||
num_bytes = 0;
|
num_bytes = 0;
|
||||||
}
|
}
|
||||||
|
@ -5612,14 +5595,16 @@ static void update_global_block_rsv(struct btrfs_fs_info *fs_info)
|
||||||
num_bytes = min(num_bytes,
|
num_bytes = min(num_bytes,
|
||||||
block_rsv->size - block_rsv->reserved);
|
block_rsv->size - block_rsv->reserved);
|
||||||
block_rsv->reserved += num_bytes;
|
block_rsv->reserved += num_bytes;
|
||||||
update_bytes_may_use(fs_info, sinfo, num_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, sinfo,
|
||||||
|
num_bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
sinfo->flags, num_bytes,
|
sinfo->flags, num_bytes,
|
||||||
1);
|
1);
|
||||||
}
|
}
|
||||||
} else if (block_rsv->reserved > block_rsv->size) {
|
} else if (block_rsv->reserved > block_rsv->size) {
|
||||||
num_bytes = block_rsv->reserved - block_rsv->size;
|
num_bytes = block_rsv->reserved - block_rsv->size;
|
||||||
update_bytes_may_use(fs_info, sinfo, -num_bytes);
|
btrfs_space_info_update_bytes_may_use(fs_info, sinfo,
|
||||||
|
-num_bytes);
|
||||||
trace_btrfs_space_reservation(fs_info, "space_info",
|
trace_btrfs_space_reservation(fs_info, "space_info",
|
||||||
sinfo->flags, num_bytes, 0);
|
sinfo->flags, num_bytes, 0);
|
||||||
block_rsv->reserved = block_rsv->size;
|
block_rsv->reserved = block_rsv->size;
|
||||||
|
@ -6082,7 +6067,8 @@ static int update_block_group(struct btrfs_trans_handle *trans,
|
||||||
old_val -= num_bytes;
|
old_val -= num_bytes;
|
||||||
btrfs_set_block_group_used(&cache->item, old_val);
|
btrfs_set_block_group_used(&cache->item, old_val);
|
||||||
cache->pinned += num_bytes;
|
cache->pinned += num_bytes;
|
||||||
update_bytes_pinned(info, cache->space_info, num_bytes);
|
btrfs_space_info_update_bytes_pinned(info,
|
||||||
|
cache->space_info, num_bytes);
|
||||||
cache->space_info->bytes_used -= num_bytes;
|
cache->space_info->bytes_used -= num_bytes;
|
||||||
cache->space_info->disk_used -= num_bytes * factor;
|
cache->space_info->disk_used -= num_bytes * factor;
|
||||||
spin_unlock(&cache->lock);
|
spin_unlock(&cache->lock);
|
||||||
|
@ -6157,7 +6143,8 @@ static int pin_down_extent(struct btrfs_block_group_cache *cache,
|
||||||
spin_lock(&cache->space_info->lock);
|
spin_lock(&cache->space_info->lock);
|
||||||
spin_lock(&cache->lock);
|
spin_lock(&cache->lock);
|
||||||
cache->pinned += num_bytes;
|
cache->pinned += num_bytes;
|
||||||
update_bytes_pinned(fs_info, cache->space_info, num_bytes);
|
btrfs_space_info_update_bytes_pinned(fs_info, cache->space_info,
|
||||||
|
num_bytes);
|
||||||
if (reserved) {
|
if (reserved) {
|
||||||
cache->reserved -= num_bytes;
|
cache->reserved -= num_bytes;
|
||||||
cache->space_info->bytes_reserved -= num_bytes;
|
cache->space_info->bytes_reserved -= num_bytes;
|
||||||
|
@ -6366,7 +6353,8 @@ static int btrfs_add_reserved_bytes(struct btrfs_block_group_cache *cache,
|
||||||
} else {
|
} else {
|
||||||
cache->reserved += num_bytes;
|
cache->reserved += num_bytes;
|
||||||
space_info->bytes_reserved += num_bytes;
|
space_info->bytes_reserved += num_bytes;
|
||||||
update_bytes_may_use(cache->fs_info, space_info, -ram_bytes);
|
btrfs_space_info_update_bytes_may_use(cache->fs_info,
|
||||||
|
space_info, -ram_bytes);
|
||||||
if (delalloc)
|
if (delalloc)
|
||||||
cache->delalloc_bytes += num_bytes;
|
cache->delalloc_bytes += num_bytes;
|
||||||
}
|
}
|
||||||
|
@ -6522,7 +6510,7 @@ static int unpin_extent_range(struct btrfs_fs_info *fs_info,
|
||||||
spin_lock(&space_info->lock);
|
spin_lock(&space_info->lock);
|
||||||
spin_lock(&cache->lock);
|
spin_lock(&cache->lock);
|
||||||
cache->pinned -= len;
|
cache->pinned -= len;
|
||||||
update_bytes_pinned(fs_info, space_info, -len);
|
btrfs_space_info_update_bytes_pinned(fs_info, space_info, -len);
|
||||||
|
|
||||||
trace_btrfs_space_reservation(fs_info, "pinned",
|
trace_btrfs_space_reservation(fs_info, "pinned",
|
||||||
space_info->flags, len, 0);
|
space_info->flags, len, 0);
|
||||||
|
@ -6543,8 +6531,8 @@ static int unpin_extent_range(struct btrfs_fs_info *fs_info,
|
||||||
to_add = min(len, global_rsv->size -
|
to_add = min(len, global_rsv->size -
|
||||||
global_rsv->reserved);
|
global_rsv->reserved);
|
||||||
global_rsv->reserved += to_add;
|
global_rsv->reserved += to_add;
|
||||||
update_bytes_may_use(fs_info, space_info,
|
btrfs_space_info_update_bytes_may_use(fs_info,
|
||||||
to_add);
|
space_info, to_add);
|
||||||
if (global_rsv->reserved >= global_rsv->size)
|
if (global_rsv->reserved >= global_rsv->size)
|
||||||
global_rsv->full = 1;
|
global_rsv->full = 1;
|
||||||
trace_btrfs_space_reservation(fs_info,
|
trace_btrfs_space_reservation(fs_info,
|
||||||
|
@ -10831,7 +10819,8 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
|
||||||
spin_lock(&space_info->lock);
|
spin_lock(&space_info->lock);
|
||||||
spin_lock(&block_group->lock);
|
spin_lock(&block_group->lock);
|
||||||
|
|
||||||
update_bytes_pinned(fs_info, space_info, -block_group->pinned);
|
btrfs_space_info_update_bytes_pinned(fs_info, space_info,
|
||||||
|
-block_group->pinned);
|
||||||
space_info->bytes_readonly += block_group->pinned;
|
space_info->bytes_readonly += block_group->pinned;
|
||||||
percpu_counter_add_batch(&space_info->total_bytes_pinned,
|
percpu_counter_add_batch(&space_info->total_bytes_pinned,
|
||||||
-block_group->pinned,
|
-block_group->pinned,
|
||||||
|
|
|
@ -75,6 +75,29 @@ static inline bool btrfs_mixed_space_info(struct btrfs_space_info *space_info)
|
||||||
(space_info->flags & BTRFS_BLOCK_GROUP_DATA));
|
(space_info->flags & BTRFS_BLOCK_GROUP_DATA));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Declare a helper function to detect underflow of various space info members
|
||||||
|
*/
|
||||||
|
#define DECLARE_SPACE_INFO_UPDATE(name) \
|
||||||
|
static inline void \
|
||||||
|
btrfs_space_info_update_##name(struct btrfs_fs_info *fs_info, \
|
||||||
|
struct btrfs_space_info *sinfo, \
|
||||||
|
s64 bytes) \
|
||||||
|
{ \
|
||||||
|
lockdep_assert_held(&sinfo->lock); \
|
||||||
|
trace_update_##name(fs_info, sinfo, sinfo->name, bytes); \
|
||||||
|
if (bytes < 0 && sinfo->name < -bytes) { \
|
||||||
|
WARN_ON(1); \
|
||||||
|
sinfo->name = 0; \
|
||||||
|
return; \
|
||||||
|
} \
|
||||||
|
sinfo->name += bytes; \
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_SPACE_INFO_UPDATE(bytes_may_use);
|
||||||
|
DECLARE_SPACE_INFO_UPDATE(bytes_pinned);
|
||||||
|
|
||||||
void btrfs_space_info_add_new_bytes(struct btrfs_fs_info *fs_info,
|
void btrfs_space_info_add_new_bytes(struct btrfs_fs_info *fs_info,
|
||||||
struct btrfs_space_info *space_info,
|
struct btrfs_space_info *space_info,
|
||||||
u64 num_bytes);
|
u64 num_bytes);
|
||||||
|
|
Loading…
Reference in New Issue