* [PATCH 01/16] btrfs: remove fs_info argument from btrfs_try_granting_tickets()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
@ 2025-10-13 17:37 ` fdmanana
2025-10-13 17:37 ` [PATCH 02/16] btrfs: remove fs_info argument from priority_reclaim_data_space() fdmanana
` (17 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:37 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-group.c | 4 ++--
fs/btrfs/block-rsv.c | 2 +-
fs/btrfs/space-info.c | 14 +++++++-------
fs/btrfs/space-info.h | 5 ++---
4 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index cd51f50a7c8b..07fc75f481ff 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -3836,7 +3836,7 @@ int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
* that happens.
*/
if (num_bytes < ram_bytes)
- btrfs_try_granting_tickets(cache->fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
out:
spin_unlock(&cache->lock);
spin_unlock(&space_info->lock);
@@ -3874,7 +3874,7 @@ void btrfs_free_reserved_bytes(struct btrfs_block_group *cache, u64 num_bytes,
cache->delalloc_bytes -= num_bytes;
spin_unlock(&cache->lock);
- btrfs_try_granting_tickets(cache->fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
spin_unlock(&space_info->lock);
}
diff --git a/fs/btrfs/block-rsv.c b/fs/btrfs/block-rsv.c
index 5ad6de738aee..75cd35570a28 100644
--- a/fs/btrfs/block-rsv.c
+++ b/fs/btrfs/block-rsv.c
@@ -387,7 +387,7 @@ void btrfs_update_global_block_rsv(struct btrfs_fs_info *fs_info)
num_bytes = block_rsv->reserved - block_rsv->size;
btrfs_space_info_update_bytes_may_use(sinfo, -num_bytes);
block_rsv->reserved = block_rsv->size;
- btrfs_try_granting_tickets(fs_info, sinfo);
+ btrfs_try_granting_tickets(sinfo);
}
block_rsv->full = (block_rsv->reserved == block_rsv->size);
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 04a07d6f8537..50c7c240bb51 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -373,7 +373,7 @@ void btrfs_add_bg_to_space_info(struct btrfs_fs_info *info,
btrfs_space_info_update_bytes_zone_unusable(space_info, block_group->zone_unusable);
if (block_group->length > 0)
space_info->full = false;
- btrfs_try_granting_tickets(info, space_info);
+ btrfs_try_granting_tickets(space_info);
spin_unlock(&space_info->lock);
block_group->space_info = space_info;
@@ -523,9 +523,9 @@ static void remove_ticket(struct btrfs_space_info *space_info,
* This is for space we already have accounted in space_info->bytes_may_use, so
* basically when we're returning space from block_rsv's.
*/
-void btrfs_try_granting_tickets(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info)
+void btrfs_try_granting_tickets(struct btrfs_space_info *space_info)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct list_head *head;
enum btrfs_reserve_flush_enum flush = BTRFS_RESERVE_NO_FLUSH;
@@ -1124,7 +1124,7 @@ static bool maybe_fail_all_tickets(struct btrfs_fs_info *fs_info,
* the list.
*/
if (!aborted)
- btrfs_try_granting_tickets(fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
}
return (tickets_id != space_info->tickets_id);
}
@@ -1544,7 +1544,7 @@ static void priority_reclaim_metadata_space(struct btrfs_fs_info *fs_info,
* ticket in front of a smaller ticket that can now be satisfied with
* the available space.
*/
- btrfs_try_granting_tickets(fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
spin_unlock(&space_info->lock);
}
@@ -1572,7 +1572,7 @@ static void priority_reclaim_data_space(struct btrfs_fs_info *fs_info,
ticket->error = -ENOSPC;
remove_ticket(space_info, ticket);
- btrfs_try_granting_tickets(fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
spin_unlock(&space_info->lock);
}
@@ -2195,5 +2195,5 @@ void btrfs_return_free_space(struct btrfs_space_info *space_info, u64 len)
grant:
/* Add to any tickets we may have. */
if (len)
- btrfs_try_granting_tickets(fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
}
diff --git a/fs/btrfs/space-info.h b/fs/btrfs/space-info.h
index a846f63585c9..596a1e923ddf 100644
--- a/fs/btrfs/space-info.h
+++ b/fs/btrfs/space-info.h
@@ -283,8 +283,7 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
struct btrfs_space_info *space_info,
u64 orig_bytes,
enum btrfs_reserve_flush_enum flush);
-void btrfs_try_granting_tickets(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info);
+void btrfs_try_granting_tickets(struct btrfs_space_info *space_info);
int btrfs_can_overcommit(struct btrfs_fs_info *fs_info,
const struct btrfs_space_info *space_info, u64 bytes,
enum btrfs_reserve_flush_enum flush);
@@ -295,7 +294,7 @@ static inline void btrfs_space_info_free_bytes_may_use(
{
spin_lock(&space_info->lock);
btrfs_space_info_update_bytes_may_use(space_info, -num_bytes);
- btrfs_try_granting_tickets(space_info->fs_info, space_info);
+ btrfs_try_granting_tickets(space_info);
spin_unlock(&space_info->lock);
}
int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 02/16] btrfs: remove fs_info argument from priority_reclaim_data_space()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
2025-10-13 17:37 ` [PATCH 01/16] btrfs: remove fs_info argument from btrfs_try_granting_tickets() fdmanana
@ 2025-10-13 17:37 ` fdmanana
2025-10-13 17:37 ` [PATCH 03/16] btrfs: remove fs_info argument from priority_reclaim_metadata_space() fdmanana
` (16 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:37 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 50c7c240bb51..403cfadd7f9d 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1548,10 +1548,11 @@ static void priority_reclaim_metadata_space(struct btrfs_fs_info *fs_info,
spin_unlock(&space_info->lock);
}
-static void priority_reclaim_data_space(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+static void priority_reclaim_data_space(struct btrfs_space_info *space_info,
struct reserve_ticket *ticket)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
+
spin_lock(&space_info->lock);
/* We could have been granted before we got here. */
@@ -1647,7 +1648,7 @@ static int handle_reserve_ticket(struct btrfs_fs_info *fs_info,
ARRAY_SIZE(evict_flush_states));
break;
case BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE:
- priority_reclaim_data_space(fs_info, space_info, ticket);
+ priority_reclaim_data_space(space_info, ticket);
break;
default:
ASSERT(0);
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 03/16] btrfs: remove fs_info argument from priority_reclaim_metadata_space()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
2025-10-13 17:37 ` [PATCH 01/16] btrfs: remove fs_info argument from btrfs_try_granting_tickets() fdmanana
2025-10-13 17:37 ` [PATCH 02/16] btrfs: remove fs_info argument from priority_reclaim_data_space() fdmanana
@ 2025-10-13 17:37 ` fdmanana
2025-10-13 17:37 ` [PATCH 04/16] btrfs: remove fs_info argument from maybe_fail_all_tickets() fdmanana
` (15 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:37 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 403cfadd7f9d..73ee2c63f3ef 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1489,12 +1489,12 @@ static const enum btrfs_flush_state evict_flush_states[] = {
RESET_ZONES,
};
-static void priority_reclaim_metadata_space(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
- struct reserve_ticket *ticket,
- const enum btrfs_flush_state *states,
- int states_nr)
+static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
+ struct reserve_ticket *ticket,
+ const enum btrfs_flush_state *states,
+ int states_nr)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
u64 to_reclaim;
int flush_state = 0;
@@ -1638,12 +1638,12 @@ static int handle_reserve_ticket(struct btrfs_fs_info *fs_info,
wait_reserve_ticket(space_info, ticket);
break;
case BTRFS_RESERVE_FLUSH_LIMIT:
- priority_reclaim_metadata_space(fs_info, space_info, ticket,
+ priority_reclaim_metadata_space(space_info, ticket,
priority_flush_states,
ARRAY_SIZE(priority_flush_states));
break;
case BTRFS_RESERVE_FLUSH_EVICT:
- priority_reclaim_metadata_space(fs_info, space_info, ticket,
+ priority_reclaim_metadata_space(space_info, ticket,
evict_flush_states,
ARRAY_SIZE(evict_flush_states));
break;
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 04/16] btrfs: remove fs_info argument from maybe_fail_all_tickets()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (2 preceding siblings ...)
2025-10-13 17:37 ` [PATCH 03/16] btrfs: remove fs_info argument from priority_reclaim_metadata_space() fdmanana
@ 2025-10-13 17:37 ` fdmanana
2025-10-13 17:38 ` [PATCH 05/16] btrfs: remove fs_info argument from calc_available_free_space() fdmanana
` (14 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:37 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 73ee2c63f3ef..1a2566676284 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1071,7 +1071,6 @@ static bool steal_from_global_rsv(struct btrfs_fs_info *fs_info,
/*
* We've exhausted our flushing, start failing tickets.
*
- * @fs_info - fs_info for this fs
* @space_info - the space info we were flushing
*
* We call this when we've exhausted our flushing ability and haven't made
@@ -1084,9 +1083,9 @@ static bool steal_from_global_rsv(struct btrfs_fs_info *fs_info,
* other tickets, or if it stumbles across a ticket that was smaller than the
* first ticket.
*/
-static bool maybe_fail_all_tickets(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info)
+static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct reserve_ticket *ticket;
u64 tickets_id = space_info->tickets_id;
const bool aborted = BTRFS_FS_ERROR(fs_info);
@@ -1197,7 +1196,7 @@ static void do_async_reclaim_metadata_space(struct btrfs_space_info *space_info)
if (flush_state > final_state) {
commit_cycles++;
if (commit_cycles > 2) {
- if (maybe_fail_all_tickets(fs_info, space_info)) {
+ if (maybe_fail_all_tickets(space_info)) {
flush_state = FLUSH_DELAYED_ITEMS_NR;
commit_cycles--;
} else {
@@ -1425,7 +1424,7 @@ static void do_async_reclaim_data_space(struct btrfs_space_info *space_info)
if (flush_state >= ARRAY_SIZE(data_flush_states)) {
if (space_info->full) {
- if (maybe_fail_all_tickets(fs_info, space_info))
+ if (maybe_fail_all_tickets(space_info))
flush_state = 0;
else
space_info->flush = false;
@@ -1443,7 +1442,7 @@ static void do_async_reclaim_data_space(struct btrfs_space_info *space_info)
return;
aborted_fs:
- maybe_fail_all_tickets(fs_info, space_info);
+ maybe_fail_all_tickets(space_info);
space_info->flush = false;
spin_unlock(&space_info->lock);
}
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 05/16] btrfs: remove fs_info argument from calc_available_free_space()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (3 preceding siblings ...)
2025-10-13 17:37 ` [PATCH 04/16] btrfs: remove fs_info argument from maybe_fail_all_tickets() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 06/16] btrfs: remove fs_info argument from btrfs_can_overcommit() fdmanana
` (13 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 1a2566676284..88d715dcdb0e 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -421,10 +421,10 @@ static u64 calc_effective_data_chunk_size(struct btrfs_fs_info *fs_info)
return min_t(u64, data_chunk_size, SZ_1G);
}
-static u64 calc_available_free_space(struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *space_info,
- enum btrfs_reserve_flush_enum flush)
+static u64 calc_available_free_space(const struct btrfs_space_info *space_info,
+ enum btrfs_reserve_flush_enum flush)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
u64 profile;
u64 avail;
u64 data_chunk_size;
@@ -502,7 +502,7 @@ int btrfs_can_overcommit(struct btrfs_fs_info *fs_info,
return 0;
used = btrfs_space_info_used(space_info, true);
- avail = calc_available_free_space(fs_info, space_info, flush);
+ avail = calc_available_free_space(space_info, flush);
if (used + bytes < space_info->total_bytes + avail)
return 1;
@@ -909,8 +909,7 @@ static u64 btrfs_calc_reclaim_metadata_size(struct btrfs_fs_info *fs_info,
lockdep_assert_held(&space_info->lock);
- avail = calc_available_free_space(fs_info, space_info,
- BTRFS_RESERVE_FLUSH_ALL);
+ avail = calc_available_free_space(space_info, BTRFS_RESERVE_FLUSH_ALL);
used = btrfs_space_info_used(space_info, true);
/*
@@ -992,8 +991,7 @@ static bool need_preemptive_reclaim(struct btrfs_fs_info *fs_info,
* much delalloc we need for the background flusher to kick in.
*/
- thresh = calc_available_free_space(fs_info, space_info,
- BTRFS_RESERVE_FLUSH_ALL);
+ thresh = calc_available_free_space(space_info, BTRFS_RESERVE_FLUSH_ALL);
used = space_info->bytes_used + space_info->bytes_reserved +
space_info->bytes_readonly + global_rsv_size;
if (used < space_info->total_bytes)
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 06/16] btrfs: remove fs_info argument from btrfs_can_overcommit()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (4 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 05/16] btrfs: remove fs_info argument from calc_available_free_space() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 07/16] btrfs: remove fs_info argument from btrfs_dump_space_info() fdmanana
` (12 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-group.c | 3 +--
fs/btrfs/space-info.c | 9 +++------
fs/btrfs/space-info.h | 3 +--
3 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 07fc75f481ff..0a72056fd065 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1403,8 +1403,7 @@ static int inc_block_group_ro(struct btrfs_block_group *cache, bool force)
* BTRFS_RESERVE_NO_FLUSH to give ourselves the most amount of
* leeway to allow us to mark this block group as read only.
*/
- if (btrfs_can_overcommit(cache->fs_info, sinfo, num_bytes,
- BTRFS_RESERVE_NO_FLUSH))
+ if (btrfs_can_overcommit(sinfo, num_bytes, BTRFS_RESERVE_NO_FLUSH))
ret = 0;
}
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 88d715dcdb0e..c473160d6e36 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -490,8 +490,7 @@ static u64 calc_available_free_space(const struct btrfs_space_info *space_info,
return avail;
}
-int btrfs_can_overcommit(struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *space_info, u64 bytes,
+int btrfs_can_overcommit(const struct btrfs_space_info *space_info, u64 bytes,
enum btrfs_reserve_flush_enum flush)
{
u64 avail;
@@ -525,7 +524,6 @@ static void remove_ticket(struct btrfs_space_info *space_info,
*/
void btrfs_try_granting_tickets(struct btrfs_space_info *space_info)
{
- struct btrfs_fs_info *fs_info = space_info->fs_info;
struct list_head *head;
enum btrfs_reserve_flush_enum flush = BTRFS_RESERVE_NO_FLUSH;
@@ -541,8 +539,7 @@ void btrfs_try_granting_tickets(struct btrfs_space_info *space_info)
/* Check and see if our ticket can be satisfied now. */
if ((used + ticket->bytes <= space_info->total_bytes) ||
- btrfs_can_overcommit(fs_info, space_info, ticket->bytes,
- flush)) {
+ btrfs_can_overcommit(space_info, ticket->bytes, flush)) {
btrfs_space_info_update_bytes_may_use(space_info, ticket->bytes);
remove_ticket(space_info, ticket);
ticket->bytes = 0;
@@ -1775,7 +1772,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,
*/
if (!pending_tickets &&
((used + orig_bytes <= space_info->total_bytes) ||
- btrfs_can_overcommit(fs_info, space_info, orig_bytes, flush))) {
+ btrfs_can_overcommit(space_info, orig_bytes, flush))) {
btrfs_space_info_update_bytes_may_use(space_info, orig_bytes);
ret = 0;
}
diff --git a/fs/btrfs/space-info.h b/fs/btrfs/space-info.h
index 596a1e923ddf..737e874a8c34 100644
--- a/fs/btrfs/space-info.h
+++ b/fs/btrfs/space-info.h
@@ -284,8 +284,7 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
u64 orig_bytes,
enum btrfs_reserve_flush_enum flush);
void btrfs_try_granting_tickets(struct btrfs_space_info *space_info);
-int btrfs_can_overcommit(struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *space_info, u64 bytes,
+int btrfs_can_overcommit(const struct btrfs_space_info *space_info, u64 bytes,
enum btrfs_reserve_flush_enum flush);
static inline void btrfs_space_info_free_bytes_may_use(
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 07/16] btrfs: remove fs_info argument from btrfs_dump_space_info()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (5 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 06/16] btrfs: remove fs_info argument from btrfs_can_overcommit() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 08/16] btrfs: remove fs_info argument from shrink_delalloc() and flush_space() fdmanana
` (11 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-group.c | 8 ++++----
fs/btrfs/extent-tree.c | 3 +--
fs/btrfs/space-info.c | 18 +++++++++---------
fs/btrfs/space-info.h | 3 +--
4 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index 0a72056fd065..6220ecba4f43 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1424,7 +1424,7 @@ static int inc_block_group_ro(struct btrfs_block_group *cache, bool force)
if (ret == -ENOSPC && btrfs_test_opt(cache->fs_info, ENOSPC_DEBUG)) {
btrfs_info(cache->fs_info,
"unable to make block group %llu ro", cache->start);
- btrfs_dump_space_info(cache->fs_info, cache->space_info, 0, false);
+ btrfs_dump_space_info(cache->space_info, 0, false);
}
return ret;
}
@@ -4314,7 +4314,7 @@ static void reserve_chunk_space(struct btrfs_trans_handle *trans,
if (left < bytes && btrfs_test_opt(fs_info, ENOSPC_DEBUG)) {
btrfs_info(fs_info, "left=%llu, need=%llu, flags=%llu",
left, bytes, type);
- btrfs_dump_space_info(fs_info, info, 0, false);
+ btrfs_dump_space_info(info, 0, false);
}
if (left < bytes) {
@@ -4459,7 +4459,7 @@ static void check_removing_space_info(struct btrfs_space_info *space_info)
* indicates a real bug if this happens.
*/
if (WARN_ON(space_info->bytes_pinned > 0 || space_info->bytes_may_use > 0))
- btrfs_dump_space_info(info, space_info, 0, false);
+ btrfs_dump_space_info(space_info, 0, false);
/*
* If there was a failure to cleanup a log tree, very likely due to an
@@ -4470,7 +4470,7 @@ static void check_removing_space_info(struct btrfs_space_info *space_info)
if (!(space_info->flags & BTRFS_BLOCK_GROUP_METADATA) ||
!BTRFS_FS_LOG_CLEANUP_ERROR(info)) {
if (WARN_ON(space_info->bytes_reserved > 0))
- btrfs_dump_space_info(info, space_info, 0, false);
+ btrfs_dump_space_info(space_info, 0, false);
}
WARN_ON(space_info->reclaim_size > 0);
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index dc4ca98c3780..d1e75da97f58 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4735,8 +4735,7 @@ int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
"allocation failed flags %llu, wanted %llu tree-log %d, relocation: %d",
flags, num_bytes, for_treelog, for_data_reloc);
if (sinfo)
- btrfs_dump_space_info(fs_info, sinfo,
- num_bytes, 1);
+ btrfs_dump_space_info(sinfo, num_bytes, 1);
}
}
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index c473160d6e36..55ecb6eac242 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -591,9 +591,9 @@ static void dump_global_block_rsv(struct btrfs_fs_info *fs_info)
DUMP_BLOCK_RSV(fs_info, delayed_refs_rsv);
}
-static void __btrfs_dump_space_info(const struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *info)
+static void __btrfs_dump_space_info(const struct btrfs_space_info *info)
{
+ const struct btrfs_fs_info *fs_info = info->fs_info;
const char *flag_str = space_info_flag_to_str(info);
lockdep_assert_held(&info->lock);
@@ -610,16 +610,16 @@ static void __btrfs_dump_space_info(const struct btrfs_fs_info *fs_info,
info->bytes_readonly, info->bytes_zone_unusable);
}
-void btrfs_dump_space_info(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *info, u64 bytes,
+void btrfs_dump_space_info(struct btrfs_space_info *info, u64 bytes,
bool dump_block_groups)
{
+ struct btrfs_fs_info *fs_info = info->fs_info;
struct btrfs_block_group *cache;
u64 total_avail = 0;
int index = 0;
spin_lock(&info->lock);
- __btrfs_dump_space_info(fs_info, info);
+ __btrfs_dump_space_info(info);
dump_global_block_rsv(fs_info);
spin_unlock(&info->lock);
@@ -1089,7 +1089,7 @@ static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info)
if (btrfs_test_opt(fs_info, ENOSPC_DEBUG)) {
btrfs_info(fs_info, "cannot satisfy tickets, dumping space info");
- __btrfs_dump_space_info(fs_info, space_info);
+ __btrfs_dump_space_info(space_info);
}
while (!list_empty(&space_info->tickets) &&
@@ -1882,7 +1882,7 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
space_info->flags, orig_bytes, 1);
if (btrfs_test_opt(fs_info, ENOSPC_DEBUG))
- btrfs_dump_space_info(fs_info, space_info, orig_bytes, false);
+ btrfs_dump_space_info(space_info, orig_bytes, false);
}
return ret;
}
@@ -1913,7 +1913,7 @@ int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
trace_btrfs_space_reservation(fs_info, "space_info:enospc",
space_info->flags, bytes, 1);
if (btrfs_test_opt(fs_info, ENOSPC_DEBUG))
- btrfs_dump_space_info(fs_info, space_info, bytes, false);
+ btrfs_dump_space_info(space_info, bytes, false);
}
return ret;
}
@@ -1926,7 +1926,7 @@ __cold void btrfs_dump_space_info_for_trans_abort(struct btrfs_fs_info *fs_info)
btrfs_info(fs_info, "dumping space info:");
list_for_each_entry(space_info, &fs_info->space_info, list) {
spin_lock(&space_info->lock);
- __btrfs_dump_space_info(fs_info, space_info);
+ __btrfs_dump_space_info(space_info);
spin_unlock(&space_info->lock);
}
dump_global_block_rsv(fs_info);
diff --git a/fs/btrfs/space-info.h b/fs/btrfs/space-info.h
index 737e874a8c34..a88cf71b3d3a 100644
--- a/fs/btrfs/space-info.h
+++ b/fs/btrfs/space-info.h
@@ -276,8 +276,7 @@ struct btrfs_space_info *btrfs_find_space_info(struct btrfs_fs_info *info,
u64 __pure btrfs_space_info_used(const struct btrfs_space_info *s_info,
bool may_use_included);
void btrfs_clear_space_info_full(struct btrfs_fs_info *info);
-void btrfs_dump_space_info(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *info, u64 bytes,
+void btrfs_dump_space_info(struct btrfs_space_info *info, u64 bytes,
bool dump_block_groups);
int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
struct btrfs_space_info *space_info,
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 08/16] btrfs: remove fs_info argument from shrink_delalloc() and flush_space()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (6 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 07/16] btrfs: remove fs_info argument from btrfs_dump_space_info() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 09/16] btrfs: remove fs_info argument from btrfs_calc_reclaim_metadata_size() fdmanana
` (10 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 27 ++++++++++++---------------
1 file changed, 12 insertions(+), 15 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 55ecb6eac242..4c144b3a4a4c 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -667,11 +667,11 @@ static inline u64 calc_reclaim_items_nr(const struct btrfs_fs_info *fs_info,
/*
* shrink metadata reservation for delalloc
*/
-static void shrink_delalloc(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+static void shrink_delalloc(struct btrfs_space_info *space_info,
u64 to_reclaim, bool wait_ordered,
bool for_preempt)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct btrfs_trans_handle *trans;
u64 delalloc_bytes;
u64 ordered_bytes;
@@ -798,10 +798,10 @@ static void shrink_delalloc(struct btrfs_fs_info *fs_info,
* and may fail for various reasons. The caller is supposed to examine the
* state of @space_info to detect the outcome.
*/
-static void flush_space(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info, u64 num_bytes,
- enum btrfs_flush_state state, bool for_preempt)
+static void flush_space(struct btrfs_space_info *space_info, u64 num_bytes,
+ enum btrfs_flush_state state, bool for_preempt)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct btrfs_root *root = fs_info->tree_root;
struct btrfs_trans_handle *trans;
int nr;
@@ -830,7 +830,7 @@ static void flush_space(struct btrfs_fs_info *fs_info,
case FLUSH_DELALLOC_FULL:
if (state == FLUSH_DELALLOC_FULL)
num_bytes = U64_MAX;
- shrink_delalloc(fs_info, space_info, num_bytes,
+ shrink_delalloc(space_info, num_bytes,
state != FLUSH_DELALLOC, for_preempt);
break;
case FLUSH_DELAYED_REFS_NR:
@@ -1149,7 +1149,7 @@ static void do_async_reclaim_metadata_space(struct btrfs_space_info *space_info)
flush_state = FLUSH_DELAYED_ITEMS_NR;
do {
- flush_space(fs_info, space_info, to_reclaim, flush_state, false);
+ flush_space(space_info, to_reclaim, flush_state, false);
spin_lock(&space_info->lock);
if (list_empty(&space_info->tickets)) {
space_info->flush = false;
@@ -1312,7 +1312,7 @@ static void btrfs_preempt_reclaim_metadata_space(struct work_struct *work)
to_reclaim >>= 2;
if (!to_reclaim)
to_reclaim = btrfs_calc_insert_metadata_size(fs_info, 1);
- flush_space(fs_info, space_info, to_reclaim, flush, true);
+ flush_space(space_info, to_reclaim, flush, true);
cond_resched();
spin_lock(&space_info->lock);
}
@@ -1385,7 +1385,7 @@ static void do_async_reclaim_data_space(struct btrfs_space_info *space_info)
spin_unlock(&space_info->lock);
while (!space_info->full) {
- flush_space(fs_info, space_info, U64_MAX, ALLOC_CHUNK_FORCE, false);
+ flush_space(space_info, U64_MAX, ALLOC_CHUNK_FORCE, false);
spin_lock(&space_info->lock);
if (list_empty(&space_info->tickets)) {
space_info->flush = false;
@@ -1401,7 +1401,7 @@ static void do_async_reclaim_data_space(struct btrfs_space_info *space_info)
}
while (flush_state < ARRAY_SIZE(data_flush_states)) {
- flush_space(fs_info, space_info, U64_MAX,
+ flush_space(space_info, U64_MAX,
data_flush_states[flush_state], false);
spin_lock(&space_info->lock);
if (list_empty(&space_info->tickets)) {
@@ -1507,8 +1507,7 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
while (flush_state < states_nr) {
spin_unlock(&space_info->lock);
- flush_space(fs_info, space_info, to_reclaim, states[flush_state],
- false);
+ flush_space(space_info, to_reclaim, states[flush_state], false);
flush_state++;
spin_lock(&space_info->lock);
if (ticket->bytes == 0) {
@@ -1545,8 +1544,6 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
static void priority_reclaim_data_space(struct btrfs_space_info *space_info,
struct reserve_ticket *ticket)
{
- struct btrfs_fs_info *fs_info = space_info->fs_info;
-
spin_lock(&space_info->lock);
/* We could have been granted before we got here. */
@@ -1557,7 +1554,7 @@ static void priority_reclaim_data_space(struct btrfs_space_info *space_info,
while (!space_info->full) {
spin_unlock(&space_info->lock);
- flush_space(fs_info, space_info, U64_MAX, ALLOC_CHUNK_FORCE, false);
+ flush_space(space_info, U64_MAX, ALLOC_CHUNK_FORCE, false);
spin_lock(&space_info->lock);
if (ticket->bytes == 0) {
spin_unlock(&space_info->lock);
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 09/16] btrfs: remove fs_info argument from btrfs_calc_reclaim_metadata_size()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (7 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 08/16] btrfs: remove fs_info argument from shrink_delalloc() and flush_space() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 10/16] btrfs: remove fs_info argument from need_preemptive_reclaim() fdmanana
` (9 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 4c144b3a4a4c..0f619a588eb3 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -897,8 +897,7 @@ static void flush_space(struct btrfs_space_info *space_info, u64 num_bytes,
return;
}
-static u64 btrfs_calc_reclaim_metadata_size(struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *space_info)
+static u64 btrfs_calc_reclaim_metadata_size(const struct btrfs_space_info *space_info)
{
u64 used;
u64 avail;
@@ -1138,7 +1137,7 @@ static void do_async_reclaim_metadata_space(struct btrfs_space_info *space_info)
final_state = COMMIT_TRANS;
spin_lock(&space_info->lock);
- to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info, space_info);
+ to_reclaim = btrfs_calc_reclaim_metadata_size(space_info);
if (!to_reclaim) {
space_info->flush = false;
spin_unlock(&space_info->lock);
@@ -1156,8 +1155,7 @@ static void do_async_reclaim_metadata_space(struct btrfs_space_info *space_info)
spin_unlock(&space_info->lock);
return;
}
- to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info,
- space_info);
+ to_reclaim = btrfs_calc_reclaim_metadata_size(space_info);
if (last_tickets_id == space_info->tickets_id) {
flush_state++;
} else {
@@ -1493,7 +1491,7 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
int flush_state = 0;
spin_lock(&space_info->lock);
- to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info, space_info);
+ to_reclaim = btrfs_calc_reclaim_metadata_size(space_info);
/*
* This is the priority reclaim path, so to_reclaim could be >0 still
* because we may have only satisfied the priority tickets and still
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 10/16] btrfs: remove fs_info argument from need_preemptive_reclaim()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (8 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 09/16] btrfs: remove fs_info argument from btrfs_calc_reclaim_metadata_size() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 11/16] btrfs: remove fs_info argument from steal_from_global_rsv() fdmanana
` (8 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 0f619a588eb3..4249faa94116 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -920,9 +920,9 @@ static u64 btrfs_calc_reclaim_metadata_size(const struct btrfs_space_info *space
return to_reclaim;
}
-static bool need_preemptive_reclaim(struct btrfs_fs_info *fs_info,
- const struct btrfs_space_info *space_info)
+static bool need_preemptive_reclaim(const struct btrfs_space_info *space_info)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
const u64 global_rsv_size = btrfs_block_rsv_reserved(&fs_info->global_block_rsv);
u64 ordered, delalloc;
u64 thresh;
@@ -1249,7 +1249,7 @@ static void btrfs_preempt_reclaim_metadata_space(struct work_struct *work)
trans_rsv = &fs_info->trans_block_rsv;
spin_lock(&space_info->lock);
- while (need_preemptive_reclaim(fs_info, space_info)) {
+ while (need_preemptive_reclaim(space_info)) {
enum btrfs_flush_state flush;
u64 delalloc_size = 0;
u64 to_reclaim, block_rsv_size;
@@ -1834,7 +1834,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,
*/
if (!test_bit(BTRFS_FS_LOG_RECOVERING, &fs_info->flags) &&
!work_busy(&fs_info->preempt_reclaim_work) &&
- need_preemptive_reclaim(fs_info, space_info)) {
+ need_preemptive_reclaim(space_info)) {
trace_btrfs_trigger_flush(fs_info, space_info->flags,
orig_bytes, flush, "preempt");
queue_work(system_unbound_wq,
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 11/16] btrfs: remove fs_info argument from steal_from_global_rsv()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (9 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 10/16] btrfs: remove fs_info argument from need_preemptive_reclaim() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 12/16] btrfs: remove fs_info argument from handle_reserve_ticket() fdmanana
` (7 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 4249faa94116..5c17f5234ef5 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1031,10 +1031,10 @@ static bool need_preemptive_reclaim(const struct btrfs_space_info *space_info)
!test_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state));
}
-static bool steal_from_global_rsv(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+static bool steal_from_global_rsv(struct btrfs_space_info *space_info,
struct reserve_ticket *ticket)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv;
u64 min_bytes;
@@ -1096,7 +1096,7 @@ static bool maybe_fail_all_tickets(struct btrfs_space_info *space_info)
ticket = list_first_entry(&space_info->tickets,
struct reserve_ticket, list);
- if (!aborted && steal_from_global_rsv(fs_info, space_info, ticket))
+ if (!aborted && steal_from_global_rsv(space_info, ticket))
return true;
if (!aborted && btrfs_test_opt(fs_info, ENOSPC_DEBUG))
@@ -1525,7 +1525,7 @@ static void priority_reclaim_metadata_space(struct btrfs_space_info *space_info,
if (BTRFS_FS_ERROR(fs_info)) {
ticket->error = BTRFS_FS_ERROR(fs_info);
remove_ticket(space_info, ticket);
- } else if (!steal_from_global_rsv(fs_info, space_info, ticket)) {
+ } else if (!steal_from_global_rsv(space_info, ticket)) {
ticket->error = -ENOSPC;
remove_ticket(space_info, ticket);
}
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 12/16] btrfs: remove fs_info argument from handle_reserve_ticket()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (10 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 11/16] btrfs: remove fs_info argument from steal_from_global_rsv() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 13/16] btrfs: remove fs_info argument from maybe_clamp_preempt() fdmanana
` (6 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 5c17f5234ef5..778bf239a35f 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1602,7 +1602,6 @@ static void wait_reserve_ticket(struct btrfs_space_info *space_info,
/*
* Do the appropriate flushing and waiting for a ticket.
*
- * @fs_info: the filesystem
* @space_info: space info for the reservation
* @ticket: ticket for the reservation
* @start_ns: timestamp when the reservation started
@@ -1612,8 +1611,7 @@ static void wait_reserve_ticket(struct btrfs_space_info *space_info,
* This does the work of figuring out how to flush for the ticket, waiting for
* the reservation, and returning the appropriate error if there is one.
*/
-static int handle_reserve_ticket(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+static int handle_reserve_ticket(struct btrfs_space_info *space_info,
struct reserve_ticket *ticket,
u64 start_ns, u64 orig_bytes,
enum btrfs_reserve_flush_enum flush)
@@ -1653,8 +1651,8 @@ static int handle_reserve_ticket(struct btrfs_fs_info *fs_info,
* space wasn't reserved at all).
*/
ASSERT(!(ticket->bytes == 0 && ticket->error));
- trace_btrfs_reserve_ticket(fs_info, space_info->flags, orig_bytes,
- start_ns, flush, ticket->error);
+ trace_btrfs_reserve_ticket(space_info->fs_info, space_info->flags,
+ orig_bytes, start_ns, flush, ticket->error);
return ret;
}
@@ -1845,8 +1843,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,
if (!ret || !can_ticket(flush))
return ret;
- return handle_reserve_ticket(fs_info, space_info, &ticket, start_ns,
- orig_bytes, flush);
+ return handle_reserve_ticket(space_info, &ticket, start_ns, orig_bytes, flush);
}
/*
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 13/16] btrfs: remove fs_info argument from maybe_clamp_preempt()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (11 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 12/16] btrfs: remove fs_info argument from handle_reserve_ticket() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 14/16] btrfs: fix parameter documentation for btrfs_reserve_data_bytes() fdmanana
` (5 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 778bf239a35f..7e4e185fdcf5 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1666,9 +1666,9 @@ static inline bool is_normal_flushing(enum btrfs_reserve_flush_enum flush)
(flush == BTRFS_RESERVE_FLUSH_ALL_STEAL);
}
-static inline void maybe_clamp_preempt(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info)
+static inline void maybe_clamp_preempt(struct btrfs_space_info *space_info)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
u64 ordered = percpu_counter_sum_positive(&fs_info->ordered_bytes);
u64 delalloc = percpu_counter_sum_positive(&fs_info->delalloc_bytes);
@@ -1811,7 +1811,7 @@ static int __reserve_bytes(struct btrfs_fs_info *fs_info,
* preemptive flushing in order to keep up with
* the workload.
*/
- maybe_clamp_preempt(fs_info, space_info);
+ maybe_clamp_preempt(space_info);
space_info->flush = true;
trace_btrfs_trigger_flush(fs_info,
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 14/16] btrfs: fix parameter documentation for btrfs_reserve_data_bytes()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (12 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 13/16] btrfs: remove fs_info argument from maybe_clamp_preempt() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 15/16] btrfs: remove fs_info argument from __reserve_bytes() fdmanana
` (4 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't have a fs_info argument anymore since commit 5d39fda880be
("btrfs: pass btrfs_space_info to btrfs_reserve_data_bytes()"), it
was replaced by a space_info argument. So update the documentation.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 7e4e185fdcf5..39eba78ed422 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1882,7 +1882,7 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
/*
* Try to reserve data bytes for an allocation.
*
- * @fs_info: the filesystem
+ * @space_info: the space_info we're allocating for
* @bytes: number of bytes we need
* @flush: how we are allowed to flush
*
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 15/16] btrfs: remove fs_info argument from __reserve_bytes()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (13 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 14/16] btrfs: fix parameter documentation for btrfs_reserve_data_bytes() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 17:38 ` [PATCH 16/16] btrfs: remove fs_info argument from btrfs_reserve_metadata_bytes() fdmanana
` (3 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/space-info.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index 39eba78ed422..d65b2e25d4b7 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1703,7 +1703,6 @@ static inline bool can_ticket(enum btrfs_reserve_flush_enum flush)
/*
* Try to reserve bytes from the block_rsv's space.
*
- * @fs_info: the filesystem
* @space_info: space info we want to allocate from
* @orig_bytes: number of bytes we want
* @flush: whether or not we can flush to make our reservation
@@ -1715,10 +1714,10 @@ static inline bool can_ticket(enum btrfs_reserve_flush_enum flush)
* regain reservations will be made and this will fail if there is not enough
* space already.
*/
-static int __reserve_bytes(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info, u64 orig_bytes,
+static int __reserve_bytes(struct btrfs_space_info *space_info, u64 orig_bytes,
enum btrfs_reserve_flush_enum flush)
{
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
struct work_struct *async_work;
struct reserve_ticket ticket;
u64 start_ns = 0;
@@ -1868,7 +1867,7 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
{
int ret;
- ret = __reserve_bytes(fs_info, space_info, orig_bytes, flush);
+ ret = __reserve_bytes(space_info, orig_bytes, flush);
if (ret == -ENOSPC) {
trace_btrfs_space_reservation(fs_info, "space_info:enospc",
space_info->flags, orig_bytes, 1);
@@ -1900,7 +1899,7 @@ int btrfs_reserve_data_bytes(struct btrfs_space_info *space_info, u64 bytes,
flush == BTRFS_RESERVE_NO_FLUSH);
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
- ret = __reserve_bytes(fs_info, space_info, bytes, flush);
+ ret = __reserve_bytes(space_info, bytes, flush);
if (ret == -ENOSPC) {
trace_btrfs_space_reservation(fs_info, "space_info:enospc",
space_info->flags, bytes, 1);
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH 16/16] btrfs: remove fs_info argument from btrfs_reserve_metadata_bytes()
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (14 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 15/16] btrfs: remove fs_info argument from __reserve_bytes() fdmanana
@ 2025-10-13 17:38 ` fdmanana
2025-10-13 21:28 ` [PATCH 00/16] btrfs: remove fs_info argument from space_info functions Qu Wenruo
` (2 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: fdmanana @ 2025-10-13 17:38 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
We don't need it since we can grab fs_info from the given space_info.
So remove the fs_info argument.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-rsv.c | 12 +++++-------
fs/btrfs/delalloc-space.c | 4 ++--
fs/btrfs/delayed-ref.c | 2 +-
fs/btrfs/space-info.c | 6 +++---
fs/btrfs/space-info.h | 3 +--
fs/btrfs/transaction.c | 4 ++--
6 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/fs/btrfs/block-rsv.c b/fs/btrfs/block-rsv.c
index 75cd35570a28..96cf7a162987 100644
--- a/fs/btrfs/block-rsv.c
+++ b/fs/btrfs/block-rsv.c
@@ -218,8 +218,7 @@ int btrfs_block_rsv_add(struct btrfs_fs_info *fs_info,
if (num_bytes == 0)
return 0;
- ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info,
- num_bytes, flush);
+ ret = btrfs_reserve_metadata_bytes(block_rsv->space_info, num_bytes, flush);
if (!ret)
btrfs_block_rsv_add_bytes(block_rsv, num_bytes, true);
@@ -259,8 +258,7 @@ int btrfs_block_rsv_refill(struct btrfs_fs_info *fs_info,
if (!ret)
return 0;
- ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info,
- num_bytes, flush);
+ ret = btrfs_reserve_metadata_bytes(block_rsv->space_info, num_bytes, flush);
if (!ret) {
btrfs_block_rsv_add_bytes(block_rsv, num_bytes, false);
return 0;
@@ -530,8 +528,8 @@ struct btrfs_block_rsv *btrfs_use_block_rsv(struct btrfs_trans_handle *trans,
block_rsv->type, ret);
}
try_reserve:
- ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info,
- blocksize, BTRFS_RESERVE_NO_FLUSH);
+ ret = btrfs_reserve_metadata_bytes(block_rsv->space_info, blocksize,
+ BTRFS_RESERVE_NO_FLUSH);
if (!ret)
return block_rsv;
/*
@@ -552,7 +550,7 @@ struct btrfs_block_rsv *btrfs_use_block_rsv(struct btrfs_trans_handle *trans,
* one last time to force a reservation if there's enough actual space
* on disk to make the reservation.
*/
- ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info, blocksize,
+ ret = btrfs_reserve_metadata_bytes(block_rsv->space_info, blocksize,
BTRFS_RESERVE_FLUSH_EMERGENCY);
if (!ret)
return block_rsv;
diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c
index 288e1776c02d..0970799d0aa4 100644
--- a/fs/btrfs/delalloc-space.c
+++ b/fs/btrfs/delalloc-space.c
@@ -358,8 +358,8 @@ int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes,
noflush);
if (ret)
return ret;
- ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv->space_info,
- meta_reserve, flush);
+ ret = btrfs_reserve_metadata_bytes(block_rsv->space_info, meta_reserve,
+ flush);
if (ret) {
btrfs_qgroup_free_meta_prealloc(root, qgroup_reserve);
return ret;
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c
index f8fc26272f76..e8bc37453336 100644
--- a/fs/btrfs/delayed-ref.c
+++ b/fs/btrfs/delayed-ref.c
@@ -228,7 +228,7 @@ int btrfs_delayed_refs_rsv_refill(struct btrfs_fs_info *fs_info,
if (!num_bytes)
return 0;
- ret = btrfs_reserve_metadata_bytes(fs_info, space_info, num_bytes, flush);
+ ret = btrfs_reserve_metadata_bytes(space_info, num_bytes, flush);
if (ret)
return ret;
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c
index d65b2e25d4b7..dba28e969f65 100644
--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -1848,7 +1848,6 @@ static int __reserve_bytes(struct btrfs_space_info *space_info, u64 orig_bytes,
/*
* Try to reserve metadata bytes from the block_rsv's space.
*
- * @fs_info: the filesystem
* @space_info: the space_info we're allocating for
* @orig_bytes: number of bytes we want
* @flush: whether or not we can flush to make our reservation
@@ -1860,8 +1859,7 @@ static int __reserve_bytes(struct btrfs_space_info *space_info, u64 orig_bytes,
* regain reservations will be made and this will fail if there is not enough
* space already.
*/
-int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+int btrfs_reserve_metadata_bytes(struct btrfs_space_info *space_info,
u64 orig_bytes,
enum btrfs_reserve_flush_enum flush)
{
@@ -1869,6 +1867,8 @@ int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
ret = __reserve_bytes(space_info, orig_bytes, flush);
if (ret == -ENOSPC) {
+ struct btrfs_fs_info *fs_info = space_info->fs_info;
+
trace_btrfs_space_reservation(fs_info, "space_info:enospc",
space_info->flags, orig_bytes, 1);
diff --git a/fs/btrfs/space-info.h b/fs/btrfs/space-info.h
index a88cf71b3d3a..2fad2e4c2252 100644
--- a/fs/btrfs/space-info.h
+++ b/fs/btrfs/space-info.h
@@ -278,8 +278,7 @@ u64 __pure btrfs_space_info_used(const struct btrfs_space_info *s_info,
void btrfs_clear_space_info_full(struct btrfs_fs_info *info);
void btrfs_dump_space_info(struct btrfs_space_info *info, u64 bytes,
bool dump_block_groups);
-int btrfs_reserve_metadata_bytes(struct btrfs_fs_info *fs_info,
- struct btrfs_space_info *space_info,
+int btrfs_reserve_metadata_bytes(struct btrfs_space_info *space_info,
u64 orig_bytes,
enum btrfs_reserve_flush_enum flush);
void btrfs_try_granting_tickets(struct btrfs_space_info *space_info);
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 89ae0c7a610a..6607e354eae5 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -575,7 +575,7 @@ static int btrfs_reserve_trans_metadata(struct btrfs_fs_info *fs_info,
* We want to reserve all the bytes we may need all at once, so we only
* do 1 enospc flushing cycle per transaction start.
*/
- ret = btrfs_reserve_metadata_bytes(fs_info, si, bytes, flush);
+ ret = btrfs_reserve_metadata_bytes(si, bytes, flush);
/*
* If we are an emergency flush, which can steal from the global block
@@ -585,7 +585,7 @@ static int btrfs_reserve_trans_metadata(struct btrfs_fs_info *fs_info,
if (ret && flush == BTRFS_RESERVE_FLUSH_ALL_STEAL) {
bytes -= *delayed_refs_bytes;
*delayed_refs_bytes = 0;
- ret = btrfs_reserve_metadata_bytes(fs_info, si, bytes, flush);
+ ret = btrfs_reserve_metadata_bytes(si, bytes, flush);
}
return ret;
--
2.47.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 00/16] btrfs: remove fs_info argument from space_info functions
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (15 preceding siblings ...)
2025-10-13 17:38 ` [PATCH 16/16] btrfs: remove fs_info argument from btrfs_reserve_metadata_bytes() fdmanana
@ 2025-10-13 21:28 ` Qu Wenruo
2025-10-14 7:08 ` Johannes Thumshirn
2025-10-15 8:59 ` Anand Jain
18 siblings, 0 replies; 20+ messages in thread
From: Qu Wenruo @ 2025-10-13 21:28 UTC (permalink / raw)
To: fdmanana, linux-btrfs
在 2025/10/14 04:07, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> We don't need to pass fs_info since we can grab it from a space_info.
> More details in the changelog, trivial patchset.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Thanks,
Qu
>
> Filipe Manana (16):
> btrfs: remove fs_info argument from btrfs_try_granting_tickets()
> btrfs: remove fs_info argument from priority_reclaim_data_space()
> btrfs: remove fs_info argument from priority_reclaim_metadata_space()
> btrfs: remove fs_info argument from maybe_fail_all_tickets()
> btrfs: remove fs_info argument from calc_available_free_space()
> btrfs: remove fs_info argument from btrfs_can_overcommit()
> btrfs: remove fs_info argument from btrfs_dump_space_info()
> btrfs: remove fs_info argument from shrink_delalloc() and flush_space()
> btrfs: remove fs_info argument from btrfs_calc_reclaim_metadata_size()
> btrfs: remove fs_info argument from need_preemptive_reclaim()
> btrfs: remove fs_info argument from steal_from_global_rsv()
> btrfs: remove fs_info argument from handle_reserve_ticket()
> btrfs: remove fs_info argument from maybe_clamp_preempt()
> btrfs: fix parameter documentation for btrfs_reserve_data_bytes()
> btrfs: remove fs_info argument from __reserve_bytes()
> btrfs: remove fs_info argument from btrfs_reserve_metadata_bytes()
>
> fs/btrfs/block-group.c | 15 ++--
> fs/btrfs/block-rsv.c | 14 ++--
> fs/btrfs/delalloc-space.c | 4 +-
> fs/btrfs/delayed-ref.c | 2 +-
> fs/btrfs/extent-tree.c | 3 +-
> fs/btrfs/space-info.c | 168 +++++++++++++++++---------------------
> fs/btrfs/space-info.h | 14 ++--
> fs/btrfs/transaction.c | 4 +-
> 8 files changed, 101 insertions(+), 123 deletions(-)
>
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 00/16] btrfs: remove fs_info argument from space_info functions
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (16 preceding siblings ...)
2025-10-13 21:28 ` [PATCH 00/16] btrfs: remove fs_info argument from space_info functions Qu Wenruo
@ 2025-10-14 7:08 ` Johannes Thumshirn
2025-10-15 8:59 ` Anand Jain
18 siblings, 0 replies; 20+ messages in thread
From: Johannes Thumshirn @ 2025-10-14 7:08 UTC (permalink / raw)
To: fdmanana@kernel.org, linux-btrfs@vger.kernel.org
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 00/16] btrfs: remove fs_info argument from space_info functions
2025-10-13 17:37 [PATCH 00/16] btrfs: remove fs_info argument from space_info functions fdmanana
` (17 preceding siblings ...)
2025-10-14 7:08 ` Johannes Thumshirn
@ 2025-10-15 8:59 ` Anand Jain
18 siblings, 0 replies; 20+ messages in thread
From: Anand Jain @ 2025-10-15 8:59 UTC (permalink / raw)
To: fdmanana, linux-btrfs
Reviewed-by: Anand Jain <asj@kernel.org>
^ permalink raw reply [flat|nested] 20+ messages in thread