* [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events
@ 2019-10-17 2:38 Qu Wenruo
2019-10-17 2:38 ` [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order " Qu Wenruo
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Qu Wenruo @ 2019-10-17 2:38 UTC (permalink / raw)
To: linux-btrfs
Several stupid bugs exposed for qgroup related trace events.
Fix them.
Changelog:
v2:
- Split patches
Qu Wenruo (2):
btrfs: qgroup: Fix wrong parameter order for trace events
btrfs: qgroup: Fix bad entry members of qgroup trace events
fs/btrfs/qgroup.c | 4 ++--
include/trace/events/btrfs.h | 3 ++-
2 files changed, 4 insertions(+), 3 deletions(-)
--
2.23.0
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order for trace events 2019-10-17 2:38 [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events Qu Wenruo @ 2019-10-17 2:38 ` Qu Wenruo 2019-10-17 6:37 ` Nikolay Borisov 2019-10-17 2:38 ` [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup " Qu Wenruo 2019-10-17 12:09 ` [PATCH v2 0/2] btrfs: qgroup: Bug fixes for " David Sterba 2 siblings, 1 reply; 6+ messages in thread From: Qu Wenruo @ 2019-10-17 2:38 UTC (permalink / raw) To: linux-btrfs [BUG] For btrfs:qgroup_meta_reserve event, the trace event can output garbage: qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=DATA diff=2 The diff should always be alinged to sector size (4k), so there is definitely something wrong. [CAUSE] For the wrong @diff, it's caused by wrong parameter order. The correct parameters are: struct btrfs_root, s64 diff, int type. However the parameters used are: struct btrfs_root, int type, s64 diff. [FIX] Fix the super stupid bug. Fixes: 4ee0d8832c2e ("btrfs: qgroup: Update trace events for metadata reservation") Signed-off-by: Qu Wenruo <wqu@suse.com> --- fs/btrfs/qgroup.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index c4bb69941c77..3ad151655eb8 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -3629,7 +3629,7 @@ int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes, return 0; BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); - trace_qgroup_meta_reserve(root, type, (s64)num_bytes); + trace_qgroup_meta_reserve(root, (s64)num_bytes, type); ret = qgroup_reserve(root, num_bytes, enforce, type); if (ret < 0) return ret; @@ -3676,7 +3676,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes, */ num_bytes = sub_root_meta_rsv(root, num_bytes, type); BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); - trace_qgroup_meta_reserve(root, type, -(s64)num_bytes); + trace_qgroup_meta_reserve(root, -(s64)num_bytes, type); btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid, num_bytes, type); } -- 2.23.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order for trace events 2019-10-17 2:38 ` [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order " Qu Wenruo @ 2019-10-17 6:37 ` Nikolay Borisov 0 siblings, 0 replies; 6+ messages in thread From: Nikolay Borisov @ 2019-10-17 6:37 UTC (permalink / raw) To: Qu Wenruo, linux-btrfs On 17.10.19 г. 5:38 ч., Qu Wenruo wrote: > [BUG] > For btrfs:qgroup_meta_reserve event, the trace event can output garbage: > qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=DATA diff=2 > > The diff should always be alinged to sector size (4k), so there is > definitely something wrong. > > [CAUSE] > For the wrong @diff, it's caused by wrong parameter order. > The correct parameters are: > struct btrfs_root, s64 diff, int type. > > However the parameters used are: > struct btrfs_root, int type, s64 diff. > > [FIX] > Fix the super stupid bug. > > Fixes: 4ee0d8832c2e ("btrfs: qgroup: Update trace events for metadata reservation") > Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Nikolay Borisov <nborisov@suse.com> > --- > fs/btrfs/qgroup.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c > index c4bb69941c77..3ad151655eb8 100644 > --- a/fs/btrfs/qgroup.c > +++ b/fs/btrfs/qgroup.c > @@ -3629,7 +3629,7 @@ int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes, > return 0; > > BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); > - trace_qgroup_meta_reserve(root, type, (s64)num_bytes); > + trace_qgroup_meta_reserve(root, (s64)num_bytes, type); > ret = qgroup_reserve(root, num_bytes, enforce, type); > if (ret < 0) > return ret; > @@ -3676,7 +3676,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes, > */ > num_bytes = sub_root_meta_rsv(root, num_bytes, type); > BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); > - trace_qgroup_meta_reserve(root, type, -(s64)num_bytes); > + trace_qgroup_meta_reserve(root, -(s64)num_bytes, type); > btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid, > num_bytes, type); > } > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup trace events 2019-10-17 2:38 [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events Qu Wenruo 2019-10-17 2:38 ` [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order " Qu Wenruo @ 2019-10-17 2:38 ` Qu Wenruo 2019-10-17 6:33 ` Nikolay Borisov 2019-10-17 12:09 ` [PATCH v2 0/2] btrfs: qgroup: Bug fixes for " David Sterba 2 siblings, 1 reply; 6+ messages in thread From: Qu Wenruo @ 2019-10-17 2:38 UTC (permalink / raw) To: linux-btrfs [BUG] For btrfs:qgroup_meta_reserve event, the trace event can output garbage: qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=DATA diff=2 qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=0x258792 diff=2 The @type can be completely garbage, as DATA type is not possible for trace_qgroup_meta_reserve() trace event. [CAUSE] Ther are several problems related to qgroup trace events: - Unassigned entry member Member entry::type of trace_qgroup_update_reserve() and trace_qgourp_meta_reserve() is not assigned - Redundant entry member Member entry::type is completely useless in trace_qgroup_meta_convert() [FIX] Fix these stupid bugs. Fixes: 4ee0d8832c2e ("btrfs: qgroup: Update trace events for metadata reservation") Signed-off-by: Qu Wenruo <wqu@suse.com> --- include/trace/events/btrfs.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h index 5df604de4f11..75ae1899452b 100644 --- a/include/trace/events/btrfs.h +++ b/include/trace/events/btrfs.h @@ -1688,6 +1688,7 @@ TRACE_EVENT(qgroup_update_reserve, __entry->qgid = qgroup->qgroupid; __entry->cur_reserved = qgroup->rsv.values[type]; __entry->diff = diff; + __entry->type = type; ), TP_printk_btrfs("qgid=%llu type=%s cur_reserved=%llu diff=%lld", @@ -1710,6 +1711,7 @@ TRACE_EVENT(qgroup_meta_reserve, TP_fast_assign_btrfs(root->fs_info, __entry->refroot = root->root_key.objectid; __entry->diff = diff; + __entry->type = type; ), TP_printk_btrfs("refroot=%llu(%s) type=%s diff=%lld", @@ -1726,7 +1728,6 @@ TRACE_EVENT(qgroup_meta_convert, TP_STRUCT__entry_btrfs( __field( u64, refroot ) __field( s64, diff ) - __field( int, type ) ), TP_fast_assign_btrfs(root->fs_info, -- 2.23.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup trace events 2019-10-17 2:38 ` [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup " Qu Wenruo @ 2019-10-17 6:33 ` Nikolay Borisov 0 siblings, 0 replies; 6+ messages in thread From: Nikolay Borisov @ 2019-10-17 6:33 UTC (permalink / raw) To: Qu Wenruo, linux-btrfs On 17.10.19 г. 5:38 ч., Qu Wenruo wrote: > [BUG] > For btrfs:qgroup_meta_reserve event, the trace event can output garbage: > qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=DATA diff=2 > qgroup_meta_reserve: 9c7f6acc-b342-4037-bc47-7f6e4d2232d7: refroot=5(FS_TREE) type=0x258792 diff=2 > > The @type can be completely garbage, as DATA type is not possible for > trace_qgroup_meta_reserve() trace event. > > [CAUSE] > Ther are several problems related to qgroup trace events: > - Unassigned entry member > Member entry::type of trace_qgroup_update_reserve() and > trace_qgourp_meta_reserve() is not assigned > > - Redundant entry member > Member entry::type is completely useless in > trace_qgroup_meta_convert() > > [FIX] > Fix these stupid bugs. > > Fixes: 4ee0d8832c2e ("btrfs: qgroup: Update trace events for metadata reservation") > Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: Nikolay Borisov <nborisov@suse.com> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events 2019-10-17 2:38 [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events Qu Wenruo 2019-10-17 2:38 ` [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order " Qu Wenruo 2019-10-17 2:38 ` [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup " Qu Wenruo @ 2019-10-17 12:09 ` David Sterba 2 siblings, 0 replies; 6+ messages in thread From: David Sterba @ 2019-10-17 12:09 UTC (permalink / raw) To: Qu Wenruo; +Cc: linux-btrfs On Thu, Oct 17, 2019 at 10:38:35AM +0800, Qu Wenruo wrote: > Several stupid bugs exposed for qgroup related trace events. > Fix them. Queued for 5.4-rc, thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-10-17 12:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-10-17 2:38 [PATCH v2 0/2] btrfs: qgroup: Bug fixes for trace events Qu Wenruo 2019-10-17 2:38 ` [PATCH v2 1/2] btrfs: qgroup: Fix wrong parameter order " Qu Wenruo 2019-10-17 6:37 ` Nikolay Borisov 2019-10-17 2:38 ` [PATCH v2 2/2] btrfs: qgroup: Fix bad entry members of qgroup " Qu Wenruo 2019-10-17 6:33 ` Nikolay Borisov 2019-10-17 12:09 ` [PATCH v2 0/2] btrfs: qgroup: Bug fixes for " David Sterba
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox