| From 9dd29950ef74d8bdfdffa2edd6eda8dff63d0948 Mon Sep 17 00:00:00 2001 |
| From: Qu Wenruo <wqu@suse.com> |
| Date: Thu, 17 Oct 2019 10:38:36 +0800 |
| Subject: [PATCH] btrfs: tracepoints: Fix wrong parameter order for qgroup |
| events |
| |
| commit fd2b007eaec898564e269d1f478a2da0380ecf51 upstream. |
| |
| [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. |
| |
| Fixes: 4ee0d8832c2e ("btrfs: qgroup: Update trace events for metadata reservation") |
| CC: stable@vger.kernel.org # 4.19+ |
| Reviewed-by: Nikolay Borisov <nborisov@suse.com> |
| Signed-off-by: Qu Wenruo <wqu@suse.com> |
| Reviewed-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: David Sterba <dsterba@suse.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c |
| index 001efc9ba1e7..60a00f6ca18f 100644 |
| --- a/fs/btrfs/qgroup.c |
| +++ b/fs/btrfs/qgroup.c |
| @@ -3617,7 +3617,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; |
| @@ -3664,7 +3664,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.7.4 |
| |