aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/qgroup.c7
-rw-r--r--include/trace/events/btrfs.h55
2 files changed, 57 insertions, 5 deletions
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 836819c34c95..92e2c9f15951 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -3138,7 +3138,7 @@ int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
3138 return 0; 3138 return 0;
3139 3139
3140 BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); 3140 BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
3141 trace_qgroup_meta_reserve(root, (s64)num_bytes); 3141 trace_qgroup_meta_reserve(root, type, (s64)num_bytes);
3142 ret = qgroup_reserve(root, num_bytes, enforce, type); 3142 ret = qgroup_reserve(root, num_bytes, enforce, type);
3143 if (ret < 0) 3143 if (ret < 0)
3144 return ret; 3144 return ret;
@@ -3163,7 +3163,7 @@ void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root)
3163 return; 3163 return;
3164 3164
3165 /* TODO: Update trace point to handle such free */ 3165 /* TODO: Update trace point to handle such free */
3166 trace_qgroup_meta_reserve(root, 0); 3166 trace_qgroup_meta_free_all_pertrans(root);
3167 /* Special value -1 means to free all reserved space */ 3167 /* Special value -1 means to free all reserved space */
3168 btrfs_qgroup_free_refroot(fs_info, root->objectid, (u64)-1, 3168 btrfs_qgroup_free_refroot(fs_info, root->objectid, (u64)-1,
3169 BTRFS_QGROUP_RSV_META_PERTRANS); 3169 BTRFS_QGROUP_RSV_META_PERTRANS);
@@ -3185,7 +3185,7 @@ void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
3185 */ 3185 */
3186 num_bytes = sub_root_meta_rsv(root, num_bytes, type); 3186 num_bytes = sub_root_meta_rsv(root, num_bytes, type);
3187 BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize)); 3187 BUG_ON(num_bytes != round_down(num_bytes, fs_info->nodesize));
3188 trace_qgroup_meta_reserve(root, -(s64)num_bytes); 3188 trace_qgroup_meta_reserve(root, type, -(s64)num_bytes);
3189 btrfs_qgroup_free_refroot(fs_info, root->objectid, num_bytes, type); 3189 btrfs_qgroup_free_refroot(fs_info, root->objectid, num_bytes, type);
3190} 3190}
3191 3191
@@ -3245,6 +3245,7 @@ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes)
3245 /* Same as btrfs_qgroup_free_meta_prealloc() */ 3245 /* Same as btrfs_qgroup_free_meta_prealloc() */
3246 num_bytes = sub_root_meta_rsv(root, num_bytes, 3246 num_bytes = sub_root_meta_rsv(root, num_bytes,
3247 BTRFS_QGROUP_RSV_META_PREALLOC); 3247 BTRFS_QGROUP_RSV_META_PREALLOC);
3248 trace_qgroup_meta_convert(root, num_bytes);
3248 qgroup_convert_meta(fs_info, root->objectid, num_bytes); 3249 qgroup_convert_meta(fs_info, root->objectid, num_bytes);
3249} 3250}
3250 3251
diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h
index eee778ba1414..965c650a5273 100644
--- a/include/trace/events/btrfs.h
+++ b/include/trace/events/btrfs.h
@@ -1663,6 +1663,28 @@ TRACE_EVENT(qgroup_update_reserve,
1663 1663
1664TRACE_EVENT(qgroup_meta_reserve, 1664TRACE_EVENT(qgroup_meta_reserve,
1665 1665
1666 TP_PROTO(struct btrfs_root *root, s64 diff, int type),
1667
1668 TP_ARGS(root, diff, type),
1669
1670 TP_STRUCT__entry_btrfs(
1671 __field( u64, refroot )
1672 __field( s64, diff )
1673 __field( int, type )
1674 ),
1675
1676 TP_fast_assign_btrfs(root->fs_info,
1677 __entry->refroot = root->objectid;
1678 __entry->diff = diff;
1679 ),
1680
1681 TP_printk_btrfs("refroot=%llu(%s) type=%s diff=%lld",
1682 show_root_type(__entry->refroot),
1683 show_qgroup_rsv_type(__entry->type), __entry->diff)
1684);
1685
1686TRACE_EVENT(qgroup_meta_convert,
1687
1666 TP_PROTO(struct btrfs_root *root, s64 diff), 1688 TP_PROTO(struct btrfs_root *root, s64 diff),
1667 1689
1668 TP_ARGS(root, diff), 1690 TP_ARGS(root, diff),
@@ -1670,6 +1692,7 @@ TRACE_EVENT(qgroup_meta_reserve,
1670 TP_STRUCT__entry_btrfs( 1692 TP_STRUCT__entry_btrfs(
1671 __field( u64, refroot ) 1693 __field( u64, refroot )
1672 __field( s64, diff ) 1694 __field( s64, diff )
1695 __field( int, type )
1673 ), 1696 ),
1674 1697
1675 TP_fast_assign_btrfs(root->fs_info, 1698 TP_fast_assign_btrfs(root->fs_info,
@@ -1677,8 +1700,36 @@ TRACE_EVENT(qgroup_meta_reserve,
1677 __entry->diff = diff; 1700 __entry->diff = diff;
1678 ), 1701 ),
1679 1702
1680 TP_printk_btrfs("refroot=%llu(%s) diff=%lld", 1703 TP_printk_btrfs("refroot=%llu(%s) type=%s->%s diff=%lld",
1681 show_root_type(__entry->refroot), __entry->diff) 1704 show_root_type(__entry->refroot),
1705 show_qgroup_rsv_type(BTRFS_QGROUP_RSV_META_PREALLOC),
1706 show_qgroup_rsv_type(BTRFS_QGROUP_RSV_META_PERTRANS),
1707 __entry->diff)
1708);
1709
1710TRACE_EVENT(qgroup_meta_free_all_pertrans,
1711
1712 TP_PROTO(struct btrfs_root *root),
1713
1714 TP_ARGS(root),
1715
1716 TP_STRUCT__entry_btrfs(
1717 __field( u64, refroot )
1718 __field( s64, diff )
1719 __field( int, type )
1720 ),
1721
1722 TP_fast_assign_btrfs(root->fs_info,
1723 __entry->refroot = root->objectid;
1724 spin_lock(&root->qgroup_meta_rsv_lock);
1725 __entry->diff = -(s64)root->qgroup_meta_rsv_pertrans;
1726 spin_unlock(&root->qgroup_meta_rsv_lock);
1727 __entry->type = BTRFS_QGROUP_RSV_META_PERTRANS;
1728 ),
1729
1730 TP_printk_btrfs("refroot=%llu(%s) type=%s diff=%lld",
1731 show_root_type(__entry->refroot),
1732 show_qgroup_rsv_type(__entry->type), __entry->diff)
1682); 1733);
1683 1734
1684DECLARE_EVENT_CLASS(btrfs__prelim_ref, 1735DECLARE_EVENT_CLASS(btrfs__prelim_ref,