diff options
| author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2015-09-28 04:57:53 -0400 |
|---|---|---|
| committer | Chris Mason <clm@fb.com> | 2015-10-21 21:41:08 -0400 |
| commit | 81fb6f77a02678ddb0755c24f83c4ed5207da046 (patch) | |
| tree | 751927a8dcfbdff1aee42368b0b5fc7941446d10 /fs/btrfs/qgroup.c | |
| parent | b9d0b38928e21560550bd3c1a278d6e004d3bde6 (diff) | |
btrfs: qgroup: Add new trace point for qgroup data reserve
Now each qgroup reserve for data will has its ftrace event for better
debugging.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/qgroup.c')
| -rw-r--r-- | fs/btrfs/qgroup.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 7d5339da01b8..879343c959d9 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c | |||
| @@ -2516,10 +2516,12 @@ int btrfs_qgroup_reserve_data(struct inode *inode, u64 start, u64 len) | |||
| 2516 | 2516 | ||
| 2517 | changeset.bytes_changed = 0; | 2517 | changeset.bytes_changed = 0; |
| 2518 | changeset.range_changed = ulist_alloc(GFP_NOFS); | 2518 | changeset.range_changed = ulist_alloc(GFP_NOFS); |
| 2519 | |||
| 2520 | ret = set_record_extent_bits(&BTRFS_I(inode)->io_tree, start, | 2519 | ret = set_record_extent_bits(&BTRFS_I(inode)->io_tree, start, |
| 2521 | start + len -1, EXTENT_QGROUP_RESERVED, GFP_NOFS, | 2520 | start + len -1, EXTENT_QGROUP_RESERVED, GFP_NOFS, |
| 2522 | &changeset); | 2521 | &changeset); |
| 2522 | trace_btrfs_qgroup_reserve_data(inode, start, len, | ||
| 2523 | changeset.bytes_changed, | ||
| 2524 | QGROUP_RESERVE); | ||
| 2523 | if (ret < 0) | 2525 | if (ret < 0) |
| 2524 | goto cleanup; | 2526 | goto cleanup; |
| 2525 | ret = qgroup_reserve(root, changeset.bytes_changed); | 2527 | ret = qgroup_reserve(root, changeset.bytes_changed); |
| @@ -2544,6 +2546,7 @@ static int __btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len, | |||
| 2544 | int free) | 2546 | int free) |
| 2545 | { | 2547 | { |
| 2546 | struct extent_changeset changeset; | 2548 | struct extent_changeset changeset; |
| 2549 | int trace_op = QGROUP_RELEASE; | ||
| 2547 | int ret; | 2550 | int ret; |
| 2548 | 2551 | ||
| 2549 | changeset.bytes_changed = 0; | 2552 | changeset.bytes_changed = 0; |
| @@ -2557,8 +2560,12 @@ static int __btrfs_qgroup_release_data(struct inode *inode, u64 start, u64 len, | |||
| 2557 | if (ret < 0) | 2560 | if (ret < 0) |
| 2558 | goto out; | 2561 | goto out; |
| 2559 | 2562 | ||
| 2560 | if (free) | 2563 | if (free) { |
| 2561 | qgroup_free(BTRFS_I(inode)->root, changeset.bytes_changed); | 2564 | qgroup_free(BTRFS_I(inode)->root, changeset.bytes_changed); |
| 2565 | trace_op = QGROUP_FREE; | ||
| 2566 | } | ||
| 2567 | trace_btrfs_qgroup_release_data(inode, start, len, | ||
| 2568 | changeset.bytes_changed, trace_op); | ||
| 2562 | out: | 2569 | out: |
| 2563 | ulist_free(changeset.range_changed); | 2570 | ulist_free(changeset.range_changed); |
| 2564 | return ret; | 2571 | return ret; |
