* [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl
@ 2025-11-17 12:26 fdmanana
2025-11-17 12:26 ` [PATCH 1/2] btrfs: use booleans for delalloc arguments and " fdmanana
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: fdmanana @ 2025-11-17 12:26 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
Reduce the size of struct find_free_extent_ctl and use bool type for
some arguments that are defined as int but used as booleans. Details
in the change logs.
Filipe Manana (2):
btrfs: use booleans for delalloc arguments and struct find_free_extent_ctl
btrfs: place all boolean fields together in struct find_free_extent_ctl
fs/btrfs/block-group.c | 2 +-
fs/btrfs/block-group.h | 2 +-
fs/btrfs/direct-io.c | 2 +-
fs/btrfs/extent-tree.c | 16 +++++++---------
fs/btrfs/extent-tree.h | 24 ++++++++++++------------
fs/btrfs/inode.c | 8 ++++----
6 files changed, 26 insertions(+), 28 deletions(-)
--
2.47.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] btrfs: use booleans for delalloc arguments and struct find_free_extent_ctl
2025-11-17 12:26 [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl fdmanana
@ 2025-11-17 12:26 ` fdmanana
2025-11-17 20:37 ` Qu Wenruo
2025-11-17 12:26 ` [PATCH 2/2] btrfs: place all boolean fields together in " fdmanana
` (2 subsequent siblings)
3 siblings, 1 reply; 6+ messages in thread
From: fdmanana @ 2025-11-17 12:26 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
The struct find_free_extent_ctl uses an int for the 'delalloc' field but
it's always used as a boolean, and its value is used to be passed to
several functions to signal if we are dealing with delalloc. The same goes
for the 'is_data' argument from btrfs_reserve_extent(). So change the type
from int to bool and move the field definition in the find_free_extent_ctl
structure so that it's close to other bool fields and reduces the size of
the structure from 144 down to 136 bytes (at the moment it's only declared
in the stack of btrfs_reserve_extent(), never allocated otherwise).
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/block-group.c | 2 +-
fs/btrfs/block-group.h | 2 +-
fs/btrfs/direct-io.c | 2 +-
fs/btrfs/extent-tree.c | 16 +++++++---------
fs/btrfs/extent-tree.h | 4 ++--
fs/btrfs/inode.c | 8 ++++----
6 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index ebbf04501782..8ae73123b610 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -3802,7 +3802,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans,
* reservation and return -EAGAIN, otherwise this function always succeeds.
*/
int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
- u64 ram_bytes, u64 num_bytes, int delalloc,
+ u64 ram_bytes, u64 num_bytes, bool delalloc,
bool force_wrong_size_class)
{
struct btrfs_space_info *space_info = cache->space_info;
diff --git a/fs/btrfs/block-group.h b/fs/btrfs/block-group.h
index 9172104a5889..5f933455118c 100644
--- a/fs/btrfs/block-group.h
+++ b/fs/btrfs/block-group.h
@@ -345,7 +345,7 @@ int btrfs_setup_space_cache(struct btrfs_trans_handle *trans);
int btrfs_update_block_group(struct btrfs_trans_handle *trans,
u64 bytenr, u64 num_bytes, bool alloc);
int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
- u64 ram_bytes, u64 num_bytes, int delalloc,
+ u64 ram_bytes, u64 num_bytes, bool delalloc,
bool force_wrong_size_class);
void btrfs_free_reserved_bytes(struct btrfs_block_group *cache, u64 num_bytes,
bool is_delalloc);
diff --git a/fs/btrfs/direct-io.c b/fs/btrfs/direct-io.c
index 962fccceffd6..07e19e88ba4b 100644
--- a/fs/btrfs/direct-io.c
+++ b/fs/btrfs/direct-io.c
@@ -186,7 +186,7 @@ static struct extent_map *btrfs_new_extent_direct(struct btrfs_inode *inode,
alloc_hint = btrfs_get_extent_allocation_hint(inode, start, len);
again:
ret = btrfs_reserve_extent(root, len, len, fs_info->sectorsize,
- 0, alloc_hint, &ins, 1, 1);
+ 0, alloc_hint, &ins, true, true);
if (ret == -EAGAIN) {
ASSERT(btrfs_is_zoned(fs_info));
wait_on_bit_io(&inode->root->fs_info->flags, BTRFS_FS_NEED_ZONE_FINISH,
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 819e0a15e8e7..a3646440c4fe 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3587,15 +3587,14 @@ enum btrfs_loop_type {
};
static inline void
-btrfs_lock_block_group(struct btrfs_block_group *cache,
- int delalloc)
+btrfs_lock_block_group(struct btrfs_block_group *cache, bool delalloc)
{
if (delalloc)
down_read(&cache->data_rwsem);
}
static inline void btrfs_grab_block_group(struct btrfs_block_group *cache,
- int delalloc)
+ bool delalloc)
{
btrfs_get_block_group(cache);
if (delalloc)
@@ -3605,7 +3604,7 @@ static inline void btrfs_grab_block_group(struct btrfs_block_group *cache,
static struct btrfs_block_group *btrfs_lock_cluster(
struct btrfs_block_group *block_group,
struct btrfs_free_cluster *cluster,
- int delalloc)
+ bool delalloc)
__acquires(&cluster->refill_lock)
{
struct btrfs_block_group *used_bg = NULL;
@@ -3642,8 +3641,7 @@ static struct btrfs_block_group *btrfs_lock_cluster(
}
static inline void
-btrfs_release_block_group(struct btrfs_block_group *cache,
- int delalloc)
+btrfs_release_block_group(struct btrfs_block_group *cache, bool delalloc)
{
if (delalloc)
up_read(&cache->data_rwsem);
@@ -4033,7 +4031,7 @@ static int do_allocation(struct btrfs_block_group *block_group,
static void release_block_group(struct btrfs_block_group *block_group,
struct find_free_extent_ctl *ffe_ctl,
- int delalloc)
+ bool delalloc)
{
switch (ffe_ctl->policy) {
case BTRFS_EXTENT_ALLOC_CLUSTERED:
@@ -4689,7 +4687,7 @@ static noinline int find_free_extent(struct btrfs_root *root,
int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
u64 num_bytes, u64 min_alloc_size,
u64 empty_size, u64 hint_byte,
- struct btrfs_key *ins, int is_data, int delalloc)
+ struct btrfs_key *ins, bool is_data, bool delalloc)
{
struct btrfs_fs_info *fs_info = root->fs_info;
struct find_free_extent_ctl ffe_ctl = {};
@@ -5166,7 +5164,7 @@ struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
return ERR_CAST(block_rsv);
ret = btrfs_reserve_extent(root, blocksize, blocksize, blocksize,
- empty_size, hint, &ins, 0, 0);
+ empty_size, hint, &ins, false, false);
if (ret)
goto out_unuse;
diff --git a/fs/btrfs/extent-tree.h b/fs/btrfs/extent-tree.h
index e573509c5a71..f96a300a2db4 100644
--- a/fs/btrfs/extent-tree.h
+++ b/fs/btrfs/extent-tree.h
@@ -30,7 +30,6 @@ struct find_free_extent_ctl {
u64 min_alloc_size;
u64 empty_size;
u64 flags;
- int delalloc;
/* Where to start the search inside the bg */
u64 search_start;
@@ -40,6 +39,7 @@ struct find_free_extent_ctl {
struct btrfs_free_cluster *last_ptr;
bool use_cluster;
+ bool delalloc;
bool have_caching_bg;
bool orig_have_caching_bg;
@@ -137,7 +137,7 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
struct btrfs_key *ins);
int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes, u64 num_bytes,
u64 min_alloc_size, u64 empty_size, u64 hint_byte,
- struct btrfs_key *ins, int is_data, int delalloc);
+ struct btrfs_key *ins, bool is_data, bool delalloc);
int btrfs_inc_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
struct extent_buffer *buf, bool full_backref);
int btrfs_dec_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index fc0f0c46ab22..f71a5f7f55b9 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1136,7 +1136,7 @@ static void submit_one_async_extent(struct async_chunk *async_chunk,
ret = btrfs_reserve_extent(root, async_extent->ram_size,
async_extent->compressed_size,
async_extent->compressed_size,
- 0, *alloc_hint, &ins, 1, 1);
+ 0, *alloc_hint, &ins, true, true);
if (ret) {
/*
* We can't reserve contiguous space for the compressed size.
@@ -1359,7 +1359,7 @@ static noinline int cow_file_range(struct btrfs_inode *inode,
ret = btrfs_reserve_extent(root, num_bytes, num_bytes,
min_alloc_size, 0, alloc_hint,
- &ins, 1, 1);
+ &ins, true, true);
if (ret == -EAGAIN) {
/*
* btrfs_reserve_extent only returns -EAGAIN for zoned
@@ -9106,7 +9106,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
*/
cur_bytes = min(cur_bytes, last_alloc);
ret = btrfs_reserve_extent(root, cur_bytes, cur_bytes,
- min_size, 0, *alloc_hint, &ins, 1, 0);
+ min_size, 0, *alloc_hint, &ins, true, false);
if (ret)
break;
@@ -9914,7 +9914,7 @@ ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
}
ret = btrfs_reserve_extent(root, disk_num_bytes, disk_num_bytes,
- disk_num_bytes, 0, 0, &ins, 1, 1);
+ disk_num_bytes, 0, 0, &ins, true, true);
if (ret)
goto out_delalloc_release;
extent_reserved = true;
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] btrfs: place all boolean fields together in struct find_free_extent_ctl
2025-11-17 12:26 [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl fdmanana
2025-11-17 12:26 ` [PATCH 1/2] btrfs: use booleans for delalloc arguments and " fdmanana
@ 2025-11-17 12:26 ` fdmanana
2025-11-17 14:19 ` [PATCH 0/2] btrfs: reduce size of " Johannes Thumshirn
2025-11-17 20:31 ` Qu Wenruo
3 siblings, 0 replies; 6+ messages in thread
From: fdmanana @ 2025-11-17 12:26 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
Move the 'retry_uncached' and 'hint' fields close to the other boolean
fields so that we remove a hole from the structure and reduce its size
from 136 bytes down to 128 bytes. Currently this structure is only
allocated in the stack of btrfs_reserve_extent().
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/extent-tree.h | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/fs/btrfs/extent-tree.h b/fs/btrfs/extent-tree.h
index f96a300a2db4..b284f36af4e8 100644
--- a/fs/btrfs/extent-tree.h
+++ b/fs/btrfs/extent-tree.h
@@ -49,6 +49,16 @@ struct find_free_extent_ctl {
/* Allocation is called for data relocation */
bool for_data_reloc;
+ /*
+ * Set to true if we're retrying the allocation on this block group
+ * after waiting for caching progress, this is so that we retry only
+ * once before moving on to another block group.
+ */
+ bool retry_uncached;
+
+ /* Whether or not the allocator is currently following a hint */
+ bool hinted;
+
/* RAID index, converted from flags */
int index;
@@ -57,13 +67,6 @@ struct find_free_extent_ctl {
*/
int loop;
- /*
- * Set to true if we're retrying the allocation on this block group
- * after waiting for caching progress, this is so that we retry only
- * once before moving on to another block group.
- */
- bool retry_uncached;
-
/* If current block group is cached */
int cached;
@@ -82,9 +85,6 @@ struct find_free_extent_ctl {
/* Allocation policy */
enum btrfs_extent_allocation_policy policy;
- /* Whether or not the allocator is currently following a hint */
- bool hinted;
-
/* Size class of block groups to prefer in early loops */
enum btrfs_block_group_size_class size_class;
};
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl
2025-11-17 12:26 [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl fdmanana
2025-11-17 12:26 ` [PATCH 1/2] btrfs: use booleans for delalloc arguments and " fdmanana
2025-11-17 12:26 ` [PATCH 2/2] btrfs: place all boolean fields together in " fdmanana
@ 2025-11-17 14:19 ` Johannes Thumshirn
2025-11-17 20:31 ` Qu Wenruo
3 siblings, 0 replies; 6+ messages in thread
From: Johannes Thumshirn @ 2025-11-17 14:19 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] 6+ messages in thread
* Re: [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl
2025-11-17 12:26 [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl fdmanana
` (2 preceding siblings ...)
2025-11-17 14:19 ` [PATCH 0/2] btrfs: reduce size of " Johannes Thumshirn
@ 2025-11-17 20:31 ` Qu Wenruo
3 siblings, 0 replies; 6+ messages in thread
From: Qu Wenruo @ 2025-11-17 20:31 UTC (permalink / raw)
To: fdmanana, linux-btrfs
在 2025/11/17 22:56, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> Reduce the size of struct find_free_extent_ctl and use bool type for
> some arguments that are defined as int but used as booleans. Details
> in the change logs.
>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Thanks,
Qu
> Filipe Manana (2):
> btrfs: use booleans for delalloc arguments and struct find_free_extent_ctl
> btrfs: place all boolean fields together in struct find_free_extent_ctl
>
> fs/btrfs/block-group.c | 2 +-
> fs/btrfs/block-group.h | 2 +-
> fs/btrfs/direct-io.c | 2 +-
> fs/btrfs/extent-tree.c | 16 +++++++---------
> fs/btrfs/extent-tree.h | 24 ++++++++++++------------
> fs/btrfs/inode.c | 8 ++++----
> 6 files changed, 26 insertions(+), 28 deletions(-)
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] btrfs: use booleans for delalloc arguments and struct find_free_extent_ctl
2025-11-17 12:26 ` [PATCH 1/2] btrfs: use booleans for delalloc arguments and " fdmanana
@ 2025-11-17 20:37 ` Qu Wenruo
0 siblings, 0 replies; 6+ messages in thread
From: Qu Wenruo @ 2025-11-17 20:37 UTC (permalink / raw)
To: fdmanana, linux-btrfs
在 2025/11/17 22:56, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> The struct find_free_extent_ctl uses an int for the 'delalloc' field but
> it's always used as a boolean, and its value is used to be passed to
> several functions to signal if we are dealing with delalloc. The same goes
> for the 'is_data' argument from btrfs_reserve_extent(). So change the type
> from int to bool and move the field definition in the find_free_extent_ctl
> structure so that it's close to other bool fields and reduces the size of
> the structure from 144 down to 136 bytes (at the moment it's only declared
> in the stack of btrfs_reserve_extent(), never allocated otherwise).
>
> Signed-off-by: Filipe Manana <fdmanana@suse.com>
> ---
> fs/btrfs/block-group.c | 2 +-
> fs/btrfs/block-group.h | 2 +-
> fs/btrfs/direct-io.c | 2 +-
> fs/btrfs/extent-tree.c | 16 +++++++---------
> fs/btrfs/extent-tree.h | 4 ++--
> fs/btrfs/inode.c | 8 ++++----
> 6 files changed, 16 insertions(+), 18 deletions(-)
>
> diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
> index ebbf04501782..8ae73123b610 100644
> --- a/fs/btrfs/block-group.c
> +++ b/fs/btrfs/block-group.c
> @@ -3802,7 +3802,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans,
> * reservation and return -EAGAIN, otherwise this function always succeeds.
> */
> int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
> - u64 ram_bytes, u64 num_bytes, int delalloc,
> + u64 ram_bytes, u64 num_bytes, bool delalloc,
> bool force_wrong_size_class)
Unrelated to the patch, as it still looks good to me.
I'm a little concerned about the double bool parameters.
It always looks like a timed bomb, as for newer callers it's not that
hard to get the true/false sequence wrong.
For the structure member I'm completely fine with boolean members, but
for function parameters can we avoid double bools?
Like using flags or enum instead so that the function calls are more
clear about their special behaviors?
Thanks,
Qu
> {
> struct btrfs_space_info *space_info = cache->space_info;
> diff --git a/fs/btrfs/block-group.h b/fs/btrfs/block-group.h
> index 9172104a5889..5f933455118c 100644
> --- a/fs/btrfs/block-group.h
> +++ b/fs/btrfs/block-group.h
> @@ -345,7 +345,7 @@ int btrfs_setup_space_cache(struct btrfs_trans_handle *trans);
> int btrfs_update_block_group(struct btrfs_trans_handle *trans,
> u64 bytenr, u64 num_bytes, bool alloc);
> int btrfs_add_reserved_bytes(struct btrfs_block_group *cache,
> - u64 ram_bytes, u64 num_bytes, int delalloc,
> + u64 ram_bytes, u64 num_bytes, bool delalloc,
> bool force_wrong_size_class);
> void btrfs_free_reserved_bytes(struct btrfs_block_group *cache, u64 num_bytes,
> bool is_delalloc);
> diff --git a/fs/btrfs/direct-io.c b/fs/btrfs/direct-io.c
> index 962fccceffd6..07e19e88ba4b 100644
> --- a/fs/btrfs/direct-io.c
> +++ b/fs/btrfs/direct-io.c
> @@ -186,7 +186,7 @@ static struct extent_map *btrfs_new_extent_direct(struct btrfs_inode *inode,
> alloc_hint = btrfs_get_extent_allocation_hint(inode, start, len);
> again:
> ret = btrfs_reserve_extent(root, len, len, fs_info->sectorsize,
> - 0, alloc_hint, &ins, 1, 1);
> + 0, alloc_hint, &ins, true, true);
> if (ret == -EAGAIN) {
> ASSERT(btrfs_is_zoned(fs_info));
> wait_on_bit_io(&inode->root->fs_info->flags, BTRFS_FS_NEED_ZONE_FINISH,
> diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
> index 819e0a15e8e7..a3646440c4fe 100644
> --- a/fs/btrfs/extent-tree.c
> +++ b/fs/btrfs/extent-tree.c
> @@ -3587,15 +3587,14 @@ enum btrfs_loop_type {
> };
>
> static inline void
> -btrfs_lock_block_group(struct btrfs_block_group *cache,
> - int delalloc)
> +btrfs_lock_block_group(struct btrfs_block_group *cache, bool delalloc)
> {
> if (delalloc)
> down_read(&cache->data_rwsem);
> }
>
> static inline void btrfs_grab_block_group(struct btrfs_block_group *cache,
> - int delalloc)
> + bool delalloc)
> {
> btrfs_get_block_group(cache);
> if (delalloc)
> @@ -3605,7 +3604,7 @@ static inline void btrfs_grab_block_group(struct btrfs_block_group *cache,
> static struct btrfs_block_group *btrfs_lock_cluster(
> struct btrfs_block_group *block_group,
> struct btrfs_free_cluster *cluster,
> - int delalloc)
> + bool delalloc)
> __acquires(&cluster->refill_lock)
> {
> struct btrfs_block_group *used_bg = NULL;
> @@ -3642,8 +3641,7 @@ static struct btrfs_block_group *btrfs_lock_cluster(
> }
>
> static inline void
> -btrfs_release_block_group(struct btrfs_block_group *cache,
> - int delalloc)
> +btrfs_release_block_group(struct btrfs_block_group *cache, bool delalloc)
> {
> if (delalloc)
> up_read(&cache->data_rwsem);
> @@ -4033,7 +4031,7 @@ static int do_allocation(struct btrfs_block_group *block_group,
>
> static void release_block_group(struct btrfs_block_group *block_group,
> struct find_free_extent_ctl *ffe_ctl,
> - int delalloc)
> + bool delalloc)
> {
> switch (ffe_ctl->policy) {
> case BTRFS_EXTENT_ALLOC_CLUSTERED:
> @@ -4689,7 +4687,7 @@ static noinline int find_free_extent(struct btrfs_root *root,
> int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes,
> u64 num_bytes, u64 min_alloc_size,
> u64 empty_size, u64 hint_byte,
> - struct btrfs_key *ins, int is_data, int delalloc)
> + struct btrfs_key *ins, bool is_data, bool delalloc)
> {
> struct btrfs_fs_info *fs_info = root->fs_info;
> struct find_free_extent_ctl ffe_ctl = {};
> @@ -5166,7 +5164,7 @@ struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
> return ERR_CAST(block_rsv);
>
> ret = btrfs_reserve_extent(root, blocksize, blocksize, blocksize,
> - empty_size, hint, &ins, 0, 0);
> + empty_size, hint, &ins, false, false);
> if (ret)
> goto out_unuse;
>
> diff --git a/fs/btrfs/extent-tree.h b/fs/btrfs/extent-tree.h
> index e573509c5a71..f96a300a2db4 100644
> --- a/fs/btrfs/extent-tree.h
> +++ b/fs/btrfs/extent-tree.h
> @@ -30,7 +30,6 @@ struct find_free_extent_ctl {
> u64 min_alloc_size;
> u64 empty_size;
> u64 flags;
> - int delalloc;
>
> /* Where to start the search inside the bg */
> u64 search_start;
> @@ -40,6 +39,7 @@ struct find_free_extent_ctl {
> struct btrfs_free_cluster *last_ptr;
> bool use_cluster;
>
> + bool delalloc;
> bool have_caching_bg;
> bool orig_have_caching_bg;
>
> @@ -137,7 +137,7 @@ int btrfs_alloc_logged_file_extent(struct btrfs_trans_handle *trans,
> struct btrfs_key *ins);
> int btrfs_reserve_extent(struct btrfs_root *root, u64 ram_bytes, u64 num_bytes,
> u64 min_alloc_size, u64 empty_size, u64 hint_byte,
> - struct btrfs_key *ins, int is_data, int delalloc);
> + struct btrfs_key *ins, bool is_data, bool delalloc);
> int btrfs_inc_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
> struct extent_buffer *buf, bool full_backref);
> int btrfs_dec_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index fc0f0c46ab22..f71a5f7f55b9 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -1136,7 +1136,7 @@ static void submit_one_async_extent(struct async_chunk *async_chunk,
> ret = btrfs_reserve_extent(root, async_extent->ram_size,
> async_extent->compressed_size,
> async_extent->compressed_size,
> - 0, *alloc_hint, &ins, 1, 1);
> + 0, *alloc_hint, &ins, true, true);
> if (ret) {
> /*
> * We can't reserve contiguous space for the compressed size.
> @@ -1359,7 +1359,7 @@ static noinline int cow_file_range(struct btrfs_inode *inode,
>
> ret = btrfs_reserve_extent(root, num_bytes, num_bytes,
> min_alloc_size, 0, alloc_hint,
> - &ins, 1, 1);
> + &ins, true, true);
> if (ret == -EAGAIN) {
> /*
> * btrfs_reserve_extent only returns -EAGAIN for zoned
> @@ -9106,7 +9106,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
> */
> cur_bytes = min(cur_bytes, last_alloc);
> ret = btrfs_reserve_extent(root, cur_bytes, cur_bytes,
> - min_size, 0, *alloc_hint, &ins, 1, 0);
> + min_size, 0, *alloc_hint, &ins, true, false);
> if (ret)
> break;
>
> @@ -9914,7 +9914,7 @@ ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
> }
>
> ret = btrfs_reserve_extent(root, disk_num_bytes, disk_num_bytes,
> - disk_num_bytes, 0, 0, &ins, 1, 1);
> + disk_num_bytes, 0, 0, &ins, true, true);
> if (ret)
> goto out_delalloc_release;
> extent_reserved = true;
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-11-17 20:37 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-17 12:26 [PATCH 0/2] btrfs: reduce size of struct find_free_extent_ctl fdmanana
2025-11-17 12:26 ` [PATCH 1/2] btrfs: use booleans for delalloc arguments and " fdmanana
2025-11-17 20:37 ` Qu Wenruo
2025-11-17 12:26 ` [PATCH 2/2] btrfs: place all boolean fields together in " fdmanana
2025-11-17 14:19 ` [PATCH 0/2] btrfs: reduce size of " Johannes Thumshirn
2025-11-17 20:31 ` Qu Wenruo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.