Message ID | 159847956308.2601708.12409676822646276735.stgit@magnolia (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xfs: widen timestamps to deal with y2038 | expand |
On Wed, Aug 26, 2020 at 03:06:03PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > 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> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
On 8/26/20 3:06 PM, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > 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> Looks ok Reviewed-by: Allison Collins <allison.henderson@oracle.com> > --- > fs/xfs/xfs_qm.c | 2 ++ > fs/xfs/xfs_super.c | 1 + > fs/xfs/xfs_trace.h | 26 ++++++++++++++++++++++++++ > 3 files changed, 29 insertions(+) > > > diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c > index 259588a4227d..3f82e0c92c2d 100644 > --- a/fs/xfs/xfs_qm.c > +++ b/fs/xfs/xfs_qm.c > @@ -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); > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index 58be2220ae05..8230c902a813 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -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); > diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h > index abb1d859f226..a3a35a2d8ed9 100644 > --- a/fs/xfs/xfs_trace.h > +++ b/fs/xfs/xfs_trace.h > @@ -3844,6 +3844,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 >
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 259588a4227d..3f82e0c92c2d 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -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); diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 58be2220ae05..8230c902a813 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -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); diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index abb1d859f226..a3a35a2d8ed9 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -3844,6 +3844,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