xfs: trace timestamp limits
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 24 Aug 2020 18:58:01 +0000 (11:58 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 16 Sep 2020 03:52:41 +0000 (20:52 -0700)
Add a couple of tracepoints so that we can check the timestamp limits
being set on inodes and quotas.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Allison Collins <allison.henderson@oracle.com>
Reviewed-by: Gao Xiang <hsiangkao@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/xfs_qm.c
fs/xfs/xfs_super.c
fs/xfs/xfs_trace.h

index 259588a..3f82e0c 100644 (file)
@@ -670,6 +670,8 @@ xfs_qm_init_quotainfo(
                qinf->qi_expiry_min = XFS_DQ_LEGACY_EXPIRY_MIN;
                qinf->qi_expiry_max = XFS_DQ_LEGACY_EXPIRY_MAX;
        }
+       trace_xfs_quota_expiry_range(mp, qinf->qi_expiry_min,
+                       qinf->qi_expiry_max);
 
        mp->m_qflags |= (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_CHKD);
 
index 19382d6..baf5de3 100644 (file)
@@ -1491,6 +1491,7 @@ xfs_fc_fill_super(
                sb->s_time_min = XFS_LEGACY_TIME_MIN;
                sb->s_time_max = XFS_LEGACY_TIME_MAX;
        }
+       trace_xfs_inode_timestamp_range(mp, sb->s_time_min, sb->s_time_max);
        sb->s_iflags |= SB_I_CGROUPWB;
 
        set_posix_acl_flag(sb);
index 5ad27af..dcdcf99 100644 (file)
@@ -3843,6 +3843,32 @@ TRACE_EVENT(xfs_btree_bload_block,
                  __entry->nr_records)
 )
 
+DECLARE_EVENT_CLASS(xfs_timestamp_range_class,
+       TP_PROTO(struct xfs_mount *mp, time64_t min, time64_t max),
+       TP_ARGS(mp, min, max),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __field(long long, min)
+               __field(long long, max)
+       ),
+       TP_fast_assign(
+               __entry->dev = mp->m_super->s_dev;
+               __entry->min = min;
+               __entry->max = max;
+       ),
+       TP_printk("dev %d:%d min %lld max %lld",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->min,
+                 __entry->max)
+)
+
+#define DEFINE_TIMESTAMP_RANGE_EVENT(name) \
+DEFINE_EVENT(xfs_timestamp_range_class, name, \
+       TP_PROTO(struct xfs_mount *mp, long long min, long long max), \
+       TP_ARGS(mp, min, max))
+DEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range);
+DEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range);
+
 #endif /* _TRACE_XFS_H */
 
 #undef TRACE_INCLUDE_PATH