* [PATCH 0/4] btrfs: qgroup API cleanups
@ 2026-03-17 19:46 fdmanana
2026-03-17 19:47 ` [PATCH 1/4] btrfs: removed unused qgroup functions for pertrans reservation and freeing fdmanana
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: fdmanana @ 2026-03-17 19:46 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
Remove some unnecessary qgroup functions and exports and make the API
simpler.
Filipe Manana (4):
btrfs: removed unused qgroup functions for pertrans reservation and freeing
btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc()
btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc()
btrfs: unexport btrfs_qgroup_reserve_meta()
fs/btrfs/delayed-inode.c | 3 +--
fs/btrfs/qgroup.c | 27 ++++++++++++++------------
fs/btrfs/qgroup.h | 42 +++-------------------------------------
3 files changed, 19 insertions(+), 53 deletions(-)
--
2.47.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] btrfs: removed unused qgroup functions for pertrans reservation and freeing
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
@ 2026-03-17 19:47 ` fdmanana
2026-03-17 19:47 ` [PATCH 2/4] btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc() fdmanana
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: fdmanana @ 2026-03-17 19:47 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
They have no more users since commit a6496849671a ("btrfs: fix start
transaction qgroup rsv double free"), so remove them.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/qgroup.h | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index a979fd59a4da..419f3c4120ce 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -397,14 +397,7 @@ int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
enum btrfs_qgroup_rsv_type type, bool enforce,
bool noflush);
-/* Reserve metadata space for pertrans and prealloc type */
-static inline int btrfs_qgroup_reserve_meta_pertrans(struct btrfs_root *root,
- int num_bytes, bool enforce)
-{
- return __btrfs_qgroup_reserve_meta(root, num_bytes,
- BTRFS_QGROUP_RSV_META_PERTRANS,
- enforce, false);
-}
+
static inline int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root,
int num_bytes, bool enforce,
bool noflush)
@@ -417,14 +410,6 @@ static inline int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root,
void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
enum btrfs_qgroup_rsv_type type);
-/* Free per-transaction meta reservation for error handling */
-static inline void btrfs_qgroup_free_meta_pertrans(struct btrfs_root *root,
- int num_bytes)
-{
- __btrfs_qgroup_free_meta(root, num_bytes,
- BTRFS_QGROUP_RSV_META_PERTRANS);
-}
-
/* Pre-allocated meta reservation can be freed at need */
static inline void btrfs_qgroup_free_meta_prealloc(struct btrfs_root *root,
int num_bytes)
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc()
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
2026-03-17 19:47 ` [PATCH 1/4] btrfs: removed unused qgroup functions for pertrans reservation and freeing fdmanana
@ 2026-03-17 19:47 ` fdmanana
2026-03-17 19:47 ` [PATCH 3/4] btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc() fdmanana
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: fdmanana @ 2026-03-17 19:47 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
Since __btrfs_qgroup_free_meta() is only called by
btrfs_qgroup_free_meta_prealloc(), which is a simple inline wrapper, get
rid of the later and rename __btrfs_qgroup_free_meta() to the later.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/qgroup.c | 12 +++++++-----
fs/btrfs/qgroup.h | 10 +---------
2 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 65ec45859507..8a9039fba158 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -4551,8 +4551,7 @@ void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root)
BTRFS_QGROUP_RSV_META_PERTRANS);
}
-void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type)
+void btrfs_qgroup_free_meta_prealloc(struct btrfs_root *root, int num_bytes)
{
struct btrfs_fs_info *fs_info = root->fs_info;
@@ -4565,10 +4564,13 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
* which can lead to underflow.
* Here ensure we will only free what we really have reserved.
*/
- num_bytes = sub_root_meta_rsv(root, num_bytes, type);
+ num_bytes = sub_root_meta_rsv(root, num_bytes,
+ BTRFS_QGROUP_RSV_META_PREALLOC);
BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
- trace_btrfs_qgroup_meta_reserve(root, -(s64)num_bytes, type);
- btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root), num_bytes, type);
+ trace_btrfs_qgroup_meta_reserve(root, -(s64)num_bytes,
+ BTRFS_QGROUP_RSV_META_PREALLOC);
+ btrfs_qgroup_free_refroot(fs_info, btrfs_root_id(root), num_bytes,
+ BTRFS_QGROUP_RSV_META_PREALLOC);
}
static void qgroup_convert_meta(struct btrfs_fs_info *fs_info, u64 ref_root,
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index 419f3c4120ce..190efe3ca64b 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -407,16 +407,8 @@ static inline int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root,
enforce, noflush);
}
-void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type);
-
/* Pre-allocated meta reservation can be freed at need */
-static inline void btrfs_qgroup_free_meta_prealloc(struct btrfs_root *root,
- int num_bytes)
-{
- __btrfs_qgroup_free_meta(root, num_bytes,
- BTRFS_QGROUP_RSV_META_PREALLOC);
-}
+void btrfs_qgroup_free_meta_prealloc(struct btrfs_root *root, int num_bytes);
void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root);
void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes);
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc()
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
2026-03-17 19:47 ` [PATCH 1/4] btrfs: removed unused qgroup functions for pertrans reservation and freeing fdmanana
2026-03-17 19:47 ` [PATCH 2/4] btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc() fdmanana
@ 2026-03-17 19:47 ` fdmanana
2026-03-17 19:47 ` [PATCH 4/4] btrfs: unexport btrfs_qgroup_reserve_meta() fdmanana
2026-03-18 3:42 ` [PATCH 0/4] btrfs: qgroup API cleanups Qu Wenruo
4 siblings, 0 replies; 6+ messages in thread
From: fdmanana @ 2026-03-17 19:47 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
Since __btrfs_qgroup_reserve_meta() is only called by
btrfs_qgroup_reserve_meta_prealloc(), which is a simple inline wrapper,
get rid of the later and rename __btrfs_qgroup_reserve_meta() to the
later.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/qgroup.c | 11 ++++++-----
fs/btrfs/qgroup.h | 15 ++-------------
2 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 8a9039fba158..702338580601 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -4516,20 +4516,21 @@ int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
return ret;
}
-int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type, bool enforce,
- bool noflush)
+int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root, int num_bytes,
+ bool enforce, bool noflush)
{
int ret;
- ret = btrfs_qgroup_reserve_meta(root, num_bytes, type, enforce);
+ ret = btrfs_qgroup_reserve_meta(root, num_bytes,
+ BTRFS_QGROUP_RSV_META_PREALLOC, enforce);
if ((ret <= 0 && ret != -EDQUOT) || noflush)
return ret;
ret = try_flush_qgroup(root);
if (ret < 0)
return ret;
- return btrfs_qgroup_reserve_meta(root, num_bytes, type, enforce);
+ return btrfs_qgroup_reserve_meta(root, num_bytes,
+ BTRFS_QGROUP_RSV_META_PREALLOC, enforce);
}
/*
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index 190efe3ca64b..1c568fc9544e 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -394,19 +394,8 @@ int btrfs_qgroup_free_data(struct btrfs_inode *inode,
u64 len, u64 *freed);
int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
enum btrfs_qgroup_rsv_type type, bool enforce);
-int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type, bool enforce,
- bool noflush);
-
-static inline int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root,
- int num_bytes, bool enforce,
- bool noflush)
-{
- return __btrfs_qgroup_reserve_meta(root, num_bytes,
- BTRFS_QGROUP_RSV_META_PREALLOC,
- enforce, noflush);
-}
-
+int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root, int num_bytes,
+ bool enforce, bool noflush);
/* Pre-allocated meta reservation can be freed at need */
void btrfs_qgroup_free_meta_prealloc(struct btrfs_root *root, int num_bytes);
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] btrfs: unexport btrfs_qgroup_reserve_meta()
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
` (2 preceding siblings ...)
2026-03-17 19:47 ` [PATCH 3/4] btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc() fdmanana
@ 2026-03-17 19:47 ` fdmanana
2026-03-18 3:42 ` [PATCH 0/4] btrfs: qgroup API cleanups Qu Wenruo
4 siblings, 0 replies; 6+ messages in thread
From: fdmanana @ 2026-03-17 19:47 UTC (permalink / raw)
To: linux-btrfs
From: Filipe Manana <fdmanana@suse.com>
There's only one caller outside qgroup.c of btrfs_qgroup_reserve_meta()
and we have btrfs_qgroup_reserve_meta_prealloc() is a wrapper around
that function. Make that caller use btrfs_qgroup_reserve_meta_prealloc()
and unexport btrfs_qgroup_reserve_meta(), simplifying the external API.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/delayed-inode.c | 3 +--
fs/btrfs/qgroup.c | 4 ++--
fs/btrfs/qgroup.h | 2 --
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 56ff8afe9a22..09795439b9fb 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -596,8 +596,7 @@ static int btrfs_delayed_inode_reserve_metadata(
*/
if (!src_rsv || (!trans->bytes_reserved &&
src_rsv->type != BTRFS_BLOCK_RSV_DELALLOC)) {
- ret = btrfs_qgroup_reserve_meta(root, num_bytes,
- BTRFS_QGROUP_RSV_META_PREALLOC, true);
+ ret = btrfs_qgroup_reserve_meta_prealloc(root, num_bytes, true, true);
if (ret < 0)
return ret;
ret = btrfs_block_rsv_add(fs_info, dst_rsv, num_bytes,
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 702338580601..0bf3ebc1ffb7 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -4489,8 +4489,8 @@ static int sub_root_meta_rsv(struct btrfs_root *root, int num_bytes,
return num_bytes;
}
-int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type, bool enforce)
+static int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
+ enum btrfs_qgroup_rsv_type type, bool enforce)
{
struct btrfs_fs_info *fs_info = root->fs_info;
int ret;
diff --git a/fs/btrfs/qgroup.h b/fs/btrfs/qgroup.h
index 1c568fc9544e..80dd2dacd56d 100644
--- a/fs/btrfs/qgroup.h
+++ b/fs/btrfs/qgroup.h
@@ -392,8 +392,6 @@ int btrfs_qgroup_release_data(struct btrfs_inode *inode, u64 start, u64 len, u64
int btrfs_qgroup_free_data(struct btrfs_inode *inode,
struct extent_changeset *reserved, u64 start,
u64 len, u64 *freed);
-int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
- enum btrfs_qgroup_rsv_type type, bool enforce);
int btrfs_qgroup_reserve_meta_prealloc(struct btrfs_root *root, int num_bytes,
bool enforce, bool noflush);
/* Pre-allocated meta reservation can be freed at need */
--
2.47.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] btrfs: qgroup API cleanups
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
` (3 preceding siblings ...)
2026-03-17 19:47 ` [PATCH 4/4] btrfs: unexport btrfs_qgroup_reserve_meta() fdmanana
@ 2026-03-18 3:42 ` Qu Wenruo
4 siblings, 0 replies; 6+ messages in thread
From: Qu Wenruo @ 2026-03-18 3:42 UTC (permalink / raw)
To: fdmanana, linux-btrfs
在 2026/3/18 06:16, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
>
> Remove some unnecessary qgroup functions and exports and make the API
> simpler.
Reviewed-by: Qu Wenruo <wqu@suse.com>
Thanks,
Qu
>
> Filipe Manana (4):
> btrfs: removed unused qgroup functions for pertrans reservation and freeing
> btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc()
> btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc()
> btrfs: unexport btrfs_qgroup_reserve_meta()
>
> fs/btrfs/delayed-inode.c | 3 +--
> fs/btrfs/qgroup.c | 27 ++++++++++++++------------
> fs/btrfs/qgroup.h | 42 +++-------------------------------------
> 3 files changed, 19 insertions(+), 53 deletions(-)
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-03-18 3:43 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-17 19:46 [PATCH 0/4] btrfs: qgroup API cleanups fdmanana
2026-03-17 19:47 ` [PATCH 1/4] btrfs: removed unused qgroup functions for pertrans reservation and freeing fdmanana
2026-03-17 19:47 ` [PATCH 2/4] btrfs: collapse __btrfs_qgroup_free_meta() into btrfs_qgroup_free_meta_prealloc() fdmanana
2026-03-17 19:47 ` [PATCH 3/4] btrfs: collapse __btrfs_qgroup_reserve_meta() into btrfs_qgroup_reserve_meta_prealloc() fdmanana
2026-03-17 19:47 ` [PATCH 4/4] btrfs: unexport btrfs_qgroup_reserve_meta() fdmanana
2026-03-18 3:42 ` [PATCH 0/4] btrfs: qgroup API cleanups 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.