|
@@ -31,8 +31,8 @@ struct xfs_da_args;
|
|
|
struct xfs_da_node_entry;
|
|
|
struct xfs_dquot;
|
|
|
struct xfs_log_item;
|
|
|
-struct xlog_ticket;
|
|
|
struct xlog;
|
|
|
+struct xlog_ticket;
|
|
|
struct xlog_recover;
|
|
|
struct xlog_recover_item;
|
|
|
struct xfs_buf_log_format;
|
|
@@ -938,6 +938,63 @@ DEFINE_LOG_ITEM_EVENT(xfs_ail_pinned);
|
|
|
DEFINE_LOG_ITEM_EVENT(xfs_ail_locked);
|
|
|
DEFINE_LOG_ITEM_EVENT(xfs_ail_flushing);
|
|
|
|
|
|
+DECLARE_EVENT_CLASS(xfs_ail_class,
|
|
|
+ TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn),
|
|
|
+ TP_ARGS(lip, old_lsn, new_lsn),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(void *, lip)
|
|
|
+ __field(uint, type)
|
|
|
+ __field(uint, flags)
|
|
|
+ __field(xfs_lsn_t, old_lsn)
|
|
|
+ __field(xfs_lsn_t, new_lsn)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ __entry->dev = lip->li_mountp->m_super->s_dev;
|
|
|
+ __entry->lip = lip;
|
|
|
+ __entry->type = lip->li_type;
|
|
|
+ __entry->flags = lip->li_flags;
|
|
|
+ __entry->old_lsn = old_lsn;
|
|
|
+ __entry->new_lsn = new_lsn;
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d lip 0x%p old lsn %d/%d new lsn %d/%d type %s flags %s",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ __entry->lip,
|
|
|
+ CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn),
|
|
|
+ CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn),
|
|
|
+ __print_symbolic(__entry->type, XFS_LI_TYPE_DESC),
|
|
|
+ __print_flags(__entry->flags, "|", XFS_LI_FLAGS))
|
|
|
+)
|
|
|
+
|
|
|
+#define DEFINE_AIL_EVENT(name) \
|
|
|
+DEFINE_EVENT(xfs_ail_class, name, \
|
|
|
+ TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), \
|
|
|
+ TP_ARGS(lip, old_lsn, new_lsn))
|
|
|
+DEFINE_AIL_EVENT(xfs_ail_insert);
|
|
|
+DEFINE_AIL_EVENT(xfs_ail_move);
|
|
|
+DEFINE_AIL_EVENT(xfs_ail_delete);
|
|
|
+
|
|
|
+TRACE_EVENT(xfs_log_assign_tail_lsn,
|
|
|
+ TP_PROTO(struct xlog *log, xfs_lsn_t new_lsn),
|
|
|
+ TP_ARGS(log, new_lsn),
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __field(dev_t, dev)
|
|
|
+ __field(xfs_lsn_t, new_lsn)
|
|
|
+ __field(xfs_lsn_t, old_lsn)
|
|
|
+ __field(xfs_lsn_t, last_sync_lsn)
|
|
|
+ ),
|
|
|
+ TP_fast_assign(
|
|
|
+ __entry->dev = log->l_mp->m_super->s_dev;
|
|
|
+ __entry->new_lsn = new_lsn;
|
|
|
+ __entry->old_lsn = atomic64_read(&log->l_tail_lsn);
|
|
|
+ __entry->last_sync_lsn = atomic64_read(&log->l_last_sync_lsn);
|
|
|
+ ),
|
|
|
+ TP_printk("dev %d:%d new tail lsn %d/%d, old lsn %d/%d, last sync %d/%d",
|
|
|
+ MAJOR(__entry->dev), MINOR(__entry->dev),
|
|
|
+ CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn),
|
|
|
+ CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn),
|
|
|
+ CYCLE_LSN(__entry->last_sync_lsn), BLOCK_LSN(__entry->last_sync_lsn))
|
|
|
+)
|
|
|
|
|
|
DECLARE_EVENT_CLASS(xfs_file_class,
|
|
|
TP_PROTO(struct xfs_inode *ip, size_t count, loff_t offset, int flags),
|