hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/xfs/xfs_trace.h
....@@ -23,6 +23,7 @@
2323 struct xlog_ticket;
2424 struct xlog_recover;
2525 struct xlog_recover_item;
26
+struct xlog_rec_header;
2627 struct xfs_buf_log_format;
2728 struct xfs_inode_log_format;
2829 struct xfs_bmbt_irec;
....@@ -30,6 +31,17 @@
3031 struct xfs_refcount_irec;
3132 struct xfs_fsmap;
3233 struct xfs_rmap_irec;
34
+struct xfs_icreate_log;
35
+struct xfs_owner_info;
36
+struct xfs_trans_res;
37
+struct xfs_inobt_rec_incore;
38
+union xfs_btree_ptr;
39
+struct xfs_dqtrx;
40
+
41
+#define XFS_ATTR_FILTER_FLAGS \
42
+ { XFS_ATTR_ROOT, "ROOT" }, \
43
+ { XFS_ATTR_SECURE, "SECURE" }, \
44
+ { XFS_ATTR_INCOMPLETE, "INCOMPLETE" }
3345
3446 DECLARE_EVENT_CLASS(xfs_attr_list_class,
3547 TP_PROTO(struct xfs_attr_list_context *ctx),
....@@ -40,39 +52,39 @@
4052 __field(u32, hashval)
4153 __field(u32, blkno)
4254 __field(u32, offset)
43
- __field(void *, alist)
55
+ __field(void *, buffer)
4456 __field(int, bufsize)
4557 __field(int, count)
4658 __field(int, firstu)
4759 __field(int, dupcnt)
48
- __field(int, flags)
60
+ __field(unsigned int, attr_filter)
4961 ),
5062 TP_fast_assign(
5163 __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev;
5264 __entry->ino = ctx->dp->i_ino;
53
- __entry->hashval = ctx->cursor->hashval;
54
- __entry->blkno = ctx->cursor->blkno;
55
- __entry->offset = ctx->cursor->offset;
56
- __entry->alist = ctx->alist;
65
+ __entry->hashval = ctx->cursor.hashval;
66
+ __entry->blkno = ctx->cursor.blkno;
67
+ __entry->offset = ctx->cursor.offset;
68
+ __entry->buffer = ctx->buffer;
5769 __entry->bufsize = ctx->bufsize;
5870 __entry->count = ctx->count;
5971 __entry->firstu = ctx->firstu;
60
- __entry->flags = ctx->flags;
72
+ __entry->attr_filter = ctx->attr_filter;
6173 ),
6274 TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u "
63
- "alist %p size %u count %u firstu %u flags %d %s",
75
+ "buffer %p size %u count %u firstu %u filter %s",
6476 MAJOR(__entry->dev), MINOR(__entry->dev),
6577 __entry->ino,
6678 __entry->hashval,
6779 __entry->blkno,
6880 __entry->offset,
6981 __entry->dupcnt,
70
- __entry->alist,
82
+ __entry->buffer,
7183 __entry->bufsize,
7284 __entry->count,
7385 __entry->firstu,
74
- __entry->flags,
75
- __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS)
86
+ __print_flags(__entry->attr_filter, "|",
87
+ XFS_ATTR_FILTER_FLAGS)
7688 )
7789 )
7890
....@@ -164,31 +176,31 @@
164176 __field(u32, hashval)
165177 __field(u32, blkno)
166178 __field(u32, offset)
167
- __field(void *, alist)
179
+ __field(void *, buffer)
168180 __field(int, bufsize)
169181 __field(int, count)
170182 __field(int, firstu)
171183 __field(int, dupcnt)
172
- __field(int, flags)
184
+ __field(unsigned int, attr_filter)
173185 __field(u32, bt_hashval)
174186 __field(u32, bt_before)
175187 ),
176188 TP_fast_assign(
177189 __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev;
178190 __entry->ino = ctx->dp->i_ino;
179
- __entry->hashval = ctx->cursor->hashval;
180
- __entry->blkno = ctx->cursor->blkno;
181
- __entry->offset = ctx->cursor->offset;
182
- __entry->alist = ctx->alist;
191
+ __entry->hashval = ctx->cursor.hashval;
192
+ __entry->blkno = ctx->cursor.blkno;
193
+ __entry->offset = ctx->cursor.offset;
194
+ __entry->buffer = ctx->buffer;
183195 __entry->bufsize = ctx->bufsize;
184196 __entry->count = ctx->count;
185197 __entry->firstu = ctx->firstu;
186
- __entry->flags = ctx->flags;
198
+ __entry->attr_filter = ctx->attr_filter;
187199 __entry->bt_hashval = be32_to_cpu(btree->hashval);
188200 __entry->bt_before = be32_to_cpu(btree->before);
189201 ),
190202 TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u "
191
- "alist %p size %u count %u firstu %u flags %d %s "
203
+ "buffer %p size %u count %u firstu %u filter %s "
192204 "node hashval %u, node before %u",
193205 MAJOR(__entry->dev), MINOR(__entry->dev),
194206 __entry->ino,
....@@ -196,12 +208,12 @@
196208 __entry->blkno,
197209 __entry->offset,
198210 __entry->dupcnt,
199
- __entry->alist,
211
+ __entry->buffer,
200212 __entry->bufsize,
201213 __entry->count,
202214 __entry->firstu,
203
- __entry->flags,
204
- __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS),
215
+ __print_flags(__entry->attr_filter, "|",
216
+ XFS_ATTR_FILTER_FLAGS),
205217 __entry->bt_hashval,
206218 __entry->bt_before)
207219 );
....@@ -213,8 +225,8 @@
213225 TP_STRUCT__entry(
214226 __field(dev_t, dev)
215227 __field(xfs_ino_t, ino)
216
- __field(void *, leaf);
217
- __field(int, pos);
228
+ __field(void *, leaf)
229
+ __field(int, pos)
218230 __field(xfs_fileoff_t, startoff)
219231 __field(xfs_fsblock_t, startblock)
220232 __field(xfs_filblks_t, blockcount)
....@@ -280,7 +292,10 @@
280292 ),
281293 TP_fast_assign(
282294 __entry->dev = bp->b_target->bt_dev;
283
- __entry->bno = bp->b_bn;
295
+ if (bp->b_bn == XFS_BUF_DADDR_NULL)
296
+ __entry->bno = bp->b_maps[0].bm_bn;
297
+ else
298
+ __entry->bno = bp->b_bn;
284299 __entry->nblks = bp->b_length;
285300 __entry->hold = atomic_read(&bp->b_hold);
286301 __entry->pincount = atomic_read(&bp->b_pin_count);
....@@ -323,7 +338,7 @@
323338 DEFINE_BUF_EVENT(xfs_buf_delwri_pushbuf);
324339 DEFINE_BUF_EVENT(xfs_buf_get_uncached);
325340 DEFINE_BUF_EVENT(xfs_buf_item_relse);
326
-DEFINE_BUF_EVENT(xfs_buf_item_iodone_async);
341
+DEFINE_BUF_EVENT(xfs_buf_iodone_async);
327342 DEFINE_BUF_EVENT(xfs_buf_error_relse);
328343 DEFINE_BUF_EVENT(xfs_buf_wait_buftarg);
329344 DEFINE_BUF_EVENT(xfs_trans_read_buf_shut);
....@@ -472,7 +487,7 @@
472487 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin);
473488 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin);
474489 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin_stale);
475
-DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unlock);
490
+DEFINE_BUF_ITEM_EVENT(xfs_buf_item_release);
476491 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed);
477492 DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push);
478493 DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf);
....@@ -637,6 +652,16 @@
637652 DEFINE_INODE_EVENT(xfs_inode_clear_cowblocks_tag);
638653 DEFINE_INODE_EVENT(xfs_inode_free_cowblocks_invalid);
639654
655
+/*
656
+ * ftrace's __print_symbolic requires that all enum values be wrapped in the
657
+ * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
658
+ * ring buffer. Somehow this was only worth mentioning in the ftrace sample
659
+ * code.
660
+ */
661
+TRACE_DEFINE_ENUM(PE_SIZE_PTE);
662
+TRACE_DEFINE_ENUM(PE_SIZE_PMD);
663
+TRACE_DEFINE_ENUM(PE_SIZE_PUD);
664
+
640665 TRACE_EVENT(xfs_filemap_fault,
641666 TP_PROTO(struct xfs_inode *ip, enum page_entry_size pe_size,
642667 bool write_fault),
....@@ -707,7 +732,7 @@
707732 __entry->writeio_blocks = writeio_blocks;
708733 ),
709734 TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d "
710
- "m_writeio_blocks %u",
735
+ "m_allocsize_blocks %u",
711736 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino,
712737 __entry->blocks, __entry->shift, __entry->writeio_blocks)
713738 )
....@@ -840,44 +865,65 @@
840865 TP_STRUCT__entry(
841866 __field(dev_t, dev)
842867 __field(u32, id)
868
+ __field(xfs_dqtype_t, type)
843869 __field(unsigned, flags)
844870 __field(unsigned, nrefs)
845871 __field(unsigned long long, res_bcount)
872
+ __field(unsigned long long, res_rtbcount)
873
+ __field(unsigned long long, res_icount)
874
+
846875 __field(unsigned long long, bcount)
876
+ __field(unsigned long long, rtbcount)
847877 __field(unsigned long long, icount)
878
+
848879 __field(unsigned long long, blk_hardlimit)
849880 __field(unsigned long long, blk_softlimit)
881
+ __field(unsigned long long, rtb_hardlimit)
882
+ __field(unsigned long long, rtb_softlimit)
850883 __field(unsigned long long, ino_hardlimit)
851884 __field(unsigned long long, ino_softlimit)
852
- ), \
885
+ ),
853886 TP_fast_assign(
854887 __entry->dev = dqp->q_mount->m_super->s_dev;
855
- __entry->id = be32_to_cpu(dqp->q_core.d_id);
856
- __entry->flags = dqp->dq_flags;
888
+ __entry->id = dqp->q_id;
889
+ __entry->type = dqp->q_type;
890
+ __entry->flags = dqp->q_flags;
857891 __entry->nrefs = dqp->q_nrefs;
858
- __entry->res_bcount = dqp->q_res_bcount;
859
- __entry->bcount = be64_to_cpu(dqp->q_core.d_bcount);
860
- __entry->icount = be64_to_cpu(dqp->q_core.d_icount);
861
- __entry->blk_hardlimit =
862
- be64_to_cpu(dqp->q_core.d_blk_hardlimit);
863
- __entry->blk_softlimit =
864
- be64_to_cpu(dqp->q_core.d_blk_softlimit);
865
- __entry->ino_hardlimit =
866
- be64_to_cpu(dqp->q_core.d_ino_hardlimit);
867
- __entry->ino_softlimit =
868
- be64_to_cpu(dqp->q_core.d_ino_softlimit);
892
+
893
+ __entry->res_bcount = dqp->q_blk.reserved;
894
+ __entry->res_rtbcount = dqp->q_rtb.reserved;
895
+ __entry->res_icount = dqp->q_ino.reserved;
896
+
897
+ __entry->bcount = dqp->q_blk.count;
898
+ __entry->rtbcount = dqp->q_rtb.count;
899
+ __entry->icount = dqp->q_ino.count;
900
+
901
+ __entry->blk_hardlimit = dqp->q_blk.hardlimit;
902
+ __entry->blk_softlimit = dqp->q_blk.softlimit;
903
+ __entry->rtb_hardlimit = dqp->q_rtb.hardlimit;
904
+ __entry->rtb_softlimit = dqp->q_rtb.softlimit;
905
+ __entry->ino_hardlimit = dqp->q_ino.hardlimit;
906
+ __entry->ino_softlimit = dqp->q_ino.softlimit;
869907 ),
870
- TP_printk("dev %d:%d id 0x%x flags %s nrefs %u res_bc 0x%llx "
908
+ TP_printk("dev %d:%d id 0x%x type %s flags %s nrefs %u "
909
+ "res_bc 0x%llx res_rtbc 0x%llx res_ic 0x%llx "
871910 "bcnt 0x%llx bhardlimit 0x%llx bsoftlimit 0x%llx "
911
+ "rtbcnt 0x%llx rtbhardlimit 0x%llx rtbsoftlimit 0x%llx "
872912 "icnt 0x%llx ihardlimit 0x%llx isoftlimit 0x%llx]",
873913 MAJOR(__entry->dev), MINOR(__entry->dev),
874914 __entry->id,
875
- __print_flags(__entry->flags, "|", XFS_DQ_FLAGS),
915
+ __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS),
916
+ __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS),
876917 __entry->nrefs,
877918 __entry->res_bcount,
919
+ __entry->res_rtbcount,
920
+ __entry->res_icount,
878921 __entry->bcount,
879922 __entry->blk_hardlimit,
880923 __entry->blk_softlimit,
924
+ __entry->rtbcount,
925
+ __entry->rtb_hardlimit,
926
+ __entry->rtb_softlimit,
881927 __entry->icount,
882928 __entry->ino_hardlimit,
883929 __entry->ino_softlimit)
....@@ -908,6 +954,125 @@
908954 DEFINE_DQUOT_EVENT(xfs_dqflush);
909955 DEFINE_DQUOT_EVENT(xfs_dqflush_force);
910956 DEFINE_DQUOT_EVENT(xfs_dqflush_done);
957
+DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_before);
958
+DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_after);
959
+
960
+#define XFS_QMOPT_FLAGS \
961
+ { XFS_QMOPT_UQUOTA, "UQUOTA" }, \
962
+ { XFS_QMOPT_PQUOTA, "PQUOTA" }, \
963
+ { XFS_QMOPT_FORCE_RES, "FORCE_RES" }, \
964
+ { XFS_QMOPT_SBVERSION, "SBVERSION" }, \
965
+ { XFS_QMOPT_GQUOTA, "GQUOTA" }, \
966
+ { XFS_QMOPT_INHERIT, "INHERIT" }, \
967
+ { XFS_QMOPT_RES_REGBLKS, "RES_REGBLKS" }, \
968
+ { XFS_QMOPT_RES_RTBLKS, "RES_RTBLKS" }, \
969
+ { XFS_QMOPT_BCOUNT, "BCOUNT" }, \
970
+ { XFS_QMOPT_ICOUNT, "ICOUNT" }, \
971
+ { XFS_QMOPT_RTBCOUNT, "RTBCOUNT" }, \
972
+ { XFS_QMOPT_DELBCOUNT, "DELBCOUNT" }, \
973
+ { XFS_QMOPT_DELRTBCOUNT, "DELRTBCOUNT" }, \
974
+ { XFS_QMOPT_RES_INOS, "RES_INOS" }
975
+
976
+TRACE_EVENT(xfs_trans_mod_dquot,
977
+ TP_PROTO(struct xfs_trans *tp, struct xfs_dquot *dqp,
978
+ unsigned int field, int64_t delta),
979
+ TP_ARGS(tp, dqp, field, delta),
980
+ TP_STRUCT__entry(
981
+ __field(dev_t, dev)
982
+ __field(xfs_dqtype_t, type)
983
+ __field(unsigned int, flags)
984
+ __field(unsigned int, dqid)
985
+ __field(unsigned int, field)
986
+ __field(int64_t, delta)
987
+ ),
988
+ TP_fast_assign(
989
+ __entry->dev = tp->t_mountp->m_super->s_dev;
990
+ __entry->type = dqp->q_type;
991
+ __entry->flags = dqp->q_flags;
992
+ __entry->dqid = dqp->q_id;
993
+ __entry->field = field;
994
+ __entry->delta = delta;
995
+ ),
996
+ TP_printk("dev %d:%d dquot id 0x%x type %s flags %s field %s delta %lld",
997
+ MAJOR(__entry->dev), MINOR(__entry->dev),
998
+ __entry->dqid,
999
+ __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS),
1000
+ __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS),
1001
+ __print_flags(__entry->field, "|", XFS_QMOPT_FLAGS),
1002
+ __entry->delta)
1003
+);
1004
+
1005
+DECLARE_EVENT_CLASS(xfs_dqtrx_class,
1006
+ TP_PROTO(struct xfs_dqtrx *qtrx),
1007
+ TP_ARGS(qtrx),
1008
+ TP_STRUCT__entry(
1009
+ __field(dev_t, dev)
1010
+ __field(xfs_dqtype_t, type)
1011
+ __field(unsigned int, flags)
1012
+ __field(u32, dqid)
1013
+
1014
+ __field(uint64_t, blk_res)
1015
+ __field(int64_t, bcount_delta)
1016
+ __field(int64_t, delbcnt_delta)
1017
+
1018
+ __field(uint64_t, rtblk_res)
1019
+ __field(uint64_t, rtblk_res_used)
1020
+ __field(int64_t, rtbcount_delta)
1021
+ __field(int64_t, delrtb_delta)
1022
+
1023
+ __field(uint64_t, ino_res)
1024
+ __field(uint64_t, ino_res_used)
1025
+ __field(int64_t, icount_delta)
1026
+ ),
1027
+ TP_fast_assign(
1028
+ __entry->dev = qtrx->qt_dquot->q_mount->m_super->s_dev;
1029
+ __entry->type = qtrx->qt_dquot->q_type;
1030
+ __entry->flags = qtrx->qt_dquot->q_flags;
1031
+ __entry->dqid = qtrx->qt_dquot->q_id;
1032
+
1033
+ __entry->blk_res = qtrx->qt_blk_res;
1034
+ __entry->bcount_delta = qtrx->qt_bcount_delta;
1035
+ __entry->delbcnt_delta = qtrx->qt_delbcnt_delta;
1036
+
1037
+ __entry->rtblk_res = qtrx->qt_rtblk_res;
1038
+ __entry->rtblk_res_used = qtrx->qt_rtblk_res_used;
1039
+ __entry->rtbcount_delta = qtrx->qt_rtbcount_delta;
1040
+ __entry->delrtb_delta = qtrx->qt_delrtb_delta;
1041
+
1042
+ __entry->ino_res = qtrx->qt_ino_res;
1043
+ __entry->ino_res_used = qtrx->qt_ino_res_used;
1044
+ __entry->icount_delta = qtrx->qt_icount_delta;
1045
+ ),
1046
+ TP_printk("dev %d:%d dquot id 0x%x type %s flags %s"
1047
+ "blk_res %llu bcount_delta %lld delbcnt_delta %lld "
1048
+ "rtblk_res %llu rtblk_res_used %llu rtbcount_delta %lld delrtb_delta %lld "
1049
+ "ino_res %llu ino_res_used %llu icount_delta %lld",
1050
+ MAJOR(__entry->dev), MINOR(__entry->dev),
1051
+ __entry->dqid,
1052
+ __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS),
1053
+ __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS),
1054
+
1055
+ __entry->blk_res,
1056
+ __entry->bcount_delta,
1057
+ __entry->delbcnt_delta,
1058
+
1059
+ __entry->rtblk_res,
1060
+ __entry->rtblk_res_used,
1061
+ __entry->rtbcount_delta,
1062
+ __entry->delrtb_delta,
1063
+
1064
+ __entry->ino_res,
1065
+ __entry->ino_res_used,
1066
+ __entry->icount_delta)
1067
+)
1068
+
1069
+#define DEFINE_DQTRX_EVENT(name) \
1070
+DEFINE_EVENT(xfs_dqtrx_class, name, \
1071
+ TP_PROTO(struct xfs_dqtrx *qtrx), \
1072
+ TP_ARGS(qtrx))
1073
+DEFINE_DQTRX_EVENT(xfs_trans_apply_dquot_deltas);
1074
+DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_before);
1075
+DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_after);
9111076
9121077 DECLARE_EVENT_CLASS(xfs_loggrant_class,
9131078 TP_PROTO(struct xlog *log, struct xlog_ticket *tic),
....@@ -977,8 +1142,6 @@
9771142 DEFINE_EVENT(xfs_loggrant_class, name, \
9781143 TP_PROTO(struct xlog *log, struct xlog_ticket *tic), \
9791144 TP_ARGS(log, tic))
980
-DEFINE_LOGGRANT_EVENT(xfs_log_done_nonperm);
981
-DEFINE_LOGGRANT_EVENT(xfs_log_done_perm);
9821145 DEFINE_LOGGRANT_EVENT(xfs_log_umount_write);
9831146 DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep);
9841147 DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake);
....@@ -987,12 +1150,13 @@
9871150 DEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit);
9881151 DEFINE_LOGGRANT_EVENT(xfs_log_regrant);
9891152 DEFINE_LOGGRANT_EVENT(xfs_log_regrant_exit);
990
-DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_enter);
991
-DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_exit);
992
-DEFINE_LOGGRANT_EVENT(xfs_log_regrant_reserve_sub);
993
-DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_enter);
994
-DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_exit);
995
-DEFINE_LOGGRANT_EVENT(xfs_log_ungrant_sub);
1153
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant);
1154
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_exit);
1155
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_sub);
1156
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant);
1157
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_sub);
1158
+DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_exit);
1159
+DEFINE_LOGGRANT_EVENT(xfs_log_cil_wait);
9961160
9971161 DECLARE_EVENT_CLASS(xfs_log_item_class,
9981162 TP_PROTO(struct xfs_log_item *lip),
....@@ -1140,82 +1304,17 @@
11401304 DEFINE_RW_EVENT(xfs_file_direct_write);
11411305 DEFINE_RW_EVENT(xfs_file_dax_write);
11421306
1143
-DECLARE_EVENT_CLASS(xfs_page_class,
1144
- TP_PROTO(struct inode *inode, struct page *page, unsigned long off,
1145
- unsigned int len),
1146
- TP_ARGS(inode, page, off, len),
1147
- TP_STRUCT__entry(
1148
- __field(dev_t, dev)
1149
- __field(xfs_ino_t, ino)
1150
- __field(pgoff_t, pgoff)
1151
- __field(loff_t, size)
1152
- __field(unsigned long, offset)
1153
- __field(unsigned int, length)
1154
- ),
1155
- TP_fast_assign(
1156
- __entry->dev = inode->i_sb->s_dev;
1157
- __entry->ino = XFS_I(inode)->i_ino;
1158
- __entry->pgoff = page_offset(page);
1159
- __entry->size = i_size_read(inode);
1160
- __entry->offset = off;
1161
- __entry->length = len;
1162
- ),
1163
- TP_printk("dev %d:%d ino 0x%llx pgoff 0x%lx size 0x%llx offset %lx "
1164
- "length %x",
1165
- MAJOR(__entry->dev), MINOR(__entry->dev),
1166
- __entry->ino,
1167
- __entry->pgoff,
1168
- __entry->size,
1169
- __entry->offset,
1170
- __entry->length)
1171
-)
1172
-
1173
-#define DEFINE_PAGE_EVENT(name) \
1174
-DEFINE_EVENT(xfs_page_class, name, \
1175
- TP_PROTO(struct inode *inode, struct page *page, unsigned long off, \
1176
- unsigned int len), \
1177
- TP_ARGS(inode, page, off, len))
1178
-DEFINE_PAGE_EVENT(xfs_writepage);
1179
-DEFINE_PAGE_EVENT(xfs_releasepage);
1180
-DEFINE_PAGE_EVENT(xfs_invalidatepage);
1181
-
1182
-DECLARE_EVENT_CLASS(xfs_readpage_class,
1183
- TP_PROTO(struct inode *inode, int nr_pages),
1184
- TP_ARGS(inode, nr_pages),
1185
- TP_STRUCT__entry(
1186
- __field(dev_t, dev)
1187
- __field(xfs_ino_t, ino)
1188
- __field(int, nr_pages)
1189
- ),
1190
- TP_fast_assign(
1191
- __entry->dev = inode->i_sb->s_dev;
1192
- __entry->ino = inode->i_ino;
1193
- __entry->nr_pages = nr_pages;
1194
- ),
1195
- TP_printk("dev %d:%d ino 0x%llx nr_pages %d",
1196
- MAJOR(__entry->dev), MINOR(__entry->dev),
1197
- __entry->ino,
1198
- __entry->nr_pages)
1199
-)
1200
-
1201
-#define DEFINE_READPAGE_EVENT(name) \
1202
-DEFINE_EVENT(xfs_readpage_class, name, \
1203
- TP_PROTO(struct inode *inode, int nr_pages), \
1204
- TP_ARGS(inode, nr_pages))
1205
-DEFINE_READPAGE_EVENT(xfs_vm_readpage);
1206
-DEFINE_READPAGE_EVENT(xfs_vm_readpages);
1207
-
12081307 DECLARE_EVENT_CLASS(xfs_imap_class,
12091308 TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count,
1210
- int type, struct xfs_bmbt_irec *irec),
1211
- TP_ARGS(ip, offset, count, type, irec),
1309
+ int whichfork, struct xfs_bmbt_irec *irec),
1310
+ TP_ARGS(ip, offset, count, whichfork, irec),
12121311 TP_STRUCT__entry(
12131312 __field(dev_t, dev)
12141313 __field(xfs_ino_t, ino)
12151314 __field(loff_t, size)
12161315 __field(loff_t, offset)
12171316 __field(size_t, count)
1218
- __field(int, type)
1317
+ __field(int, whichfork)
12191318 __field(xfs_fileoff_t, startoff)
12201319 __field(xfs_fsblock_t, startblock)
12211320 __field(xfs_filblks_t, blockcount)
....@@ -1226,33 +1325,33 @@
12261325 __entry->size = ip->i_d.di_size;
12271326 __entry->offset = offset;
12281327 __entry->count = count;
1229
- __entry->type = type;
1328
+ __entry->whichfork = whichfork;
12301329 __entry->startoff = irec ? irec->br_startoff : 0;
12311330 __entry->startblock = irec ? irec->br_startblock : 0;
12321331 __entry->blockcount = irec ? irec->br_blockcount : 0;
12331332 ),
12341333 TP_printk("dev %d:%d ino 0x%llx size 0x%llx offset 0x%llx count %zd "
1235
- "type %s startoff 0x%llx startblock %lld blockcount 0x%llx",
1334
+ "fork %s startoff 0x%llx startblock %lld blockcount 0x%llx",
12361335 MAJOR(__entry->dev), MINOR(__entry->dev),
12371336 __entry->ino,
12381337 __entry->size,
12391338 __entry->offset,
12401339 __entry->count,
1241
- __print_symbolic(__entry->type, XFS_IO_TYPES),
1340
+ __entry->whichfork == XFS_COW_FORK ? "cow" : "data",
12421341 __entry->startoff,
12431342 (int64_t)__entry->startblock,
12441343 __entry->blockcount)
12451344 )
12461345
1247
-#define DEFINE_IOMAP_EVENT(name) \
1346
+#define DEFINE_IMAP_EVENT(name) \
12481347 DEFINE_EVENT(xfs_imap_class, name, \
12491348 TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \
1250
- int type, struct xfs_bmbt_irec *irec), \
1251
- TP_ARGS(ip, offset, count, type, irec))
1252
-DEFINE_IOMAP_EVENT(xfs_map_blocks_found);
1253
-DEFINE_IOMAP_EVENT(xfs_map_blocks_alloc);
1254
-DEFINE_IOMAP_EVENT(xfs_iomap_alloc);
1255
-DEFINE_IOMAP_EVENT(xfs_iomap_found);
1349
+ int whichfork, struct xfs_bmbt_irec *irec), \
1350
+ TP_ARGS(ip, offset, count, whichfork, irec))
1351
+DEFINE_IMAP_EVENT(xfs_map_blocks_found);
1352
+DEFINE_IMAP_EVENT(xfs_map_blocks_alloc);
1353
+DEFINE_IMAP_EVENT(xfs_iomap_alloc);
1354
+DEFINE_IMAP_EVENT(xfs_iomap_found);
12561355
12571356 DECLARE_EVENT_CLASS(xfs_simple_io_class,
12581357 TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count),
....@@ -1624,8 +1723,11 @@
16241723 DEFINE_ALLOC_EVENT(xfs_alloc_exact_error);
16251724 DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft);
16261725 DEFINE_ALLOC_EVENT(xfs_alloc_near_first);
1627
-DEFINE_ALLOC_EVENT(xfs_alloc_near_greater);
1628
-DEFINE_ALLOC_EVENT(xfs_alloc_near_lesser);
1726
+DEFINE_ALLOC_EVENT(xfs_alloc_cur);
1727
+DEFINE_ALLOC_EVENT(xfs_alloc_cur_right);
1728
+DEFINE_ALLOC_EVENT(xfs_alloc_cur_left);
1729
+DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup);
1730
+DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup_done);
16291731 DEFINE_ALLOC_EVENT(xfs_alloc_near_error);
16301732 DEFINE_ALLOC_EVENT(xfs_alloc_near_noentry);
16311733 DEFINE_ALLOC_EVENT(xfs_alloc_near_busy);
....@@ -1644,6 +1746,32 @@
16441746 DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp);
16451747 DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed);
16461748 DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed);
1749
+
1750
+TRACE_EVENT(xfs_alloc_cur_check,
1751
+ TP_PROTO(struct xfs_mount *mp, xfs_btnum_t btnum, xfs_agblock_t bno,
1752
+ xfs_extlen_t len, xfs_extlen_t diff, bool new),
1753
+ TP_ARGS(mp, btnum, bno, len, diff, new),
1754
+ TP_STRUCT__entry(
1755
+ __field(dev_t, dev)
1756
+ __field(xfs_btnum_t, btnum)
1757
+ __field(xfs_agblock_t, bno)
1758
+ __field(xfs_extlen_t, len)
1759
+ __field(xfs_extlen_t, diff)
1760
+ __field(bool, new)
1761
+ ),
1762
+ TP_fast_assign(
1763
+ __entry->dev = mp->m_super->s_dev;
1764
+ __entry->btnum = btnum;
1765
+ __entry->bno = bno;
1766
+ __entry->len = len;
1767
+ __entry->diff = diff;
1768
+ __entry->new = new;
1769
+ ),
1770
+ TP_printk("dev %d:%d btree %s bno 0x%x len 0x%x diff 0x%x new %d",
1771
+ MAJOR(__entry->dev), MINOR(__entry->dev),
1772
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
1773
+ __entry->bno, __entry->len, __entry->diff, __entry->new)
1774
+)
16471775
16481776 DECLARE_EVENT_CLASS(xfs_da_class,
16491777 TP_PROTO(struct xfs_da_args *args),
....@@ -1719,7 +1847,8 @@
17191847 __field(int, namelen)
17201848 __field(int, valuelen)
17211849 __field(xfs_dahash_t, hashval)
1722
- __field(int, flags)
1850
+ __field(unsigned int, attr_filter)
1851
+ __field(unsigned int, attr_flags)
17231852 __field(int, op_flags)
17241853 ),
17251854 TP_fast_assign(
....@@ -1730,11 +1859,12 @@
17301859 __entry->namelen = args->namelen;
17311860 __entry->valuelen = args->valuelen;
17321861 __entry->hashval = args->hashval;
1733
- __entry->flags = args->flags;
1862
+ __entry->attr_filter = args->attr_filter;
1863
+ __entry->attr_flags = args->attr_flags;
17341864 __entry->op_flags = args->op_flags;
17351865 ),
17361866 TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d valuelen %d "
1737
- "hashval 0x%x flags %s op_flags %s",
1867
+ "hashval 0x%x filter %s flags %s op_flags %s",
17381868 MAJOR(__entry->dev), MINOR(__entry->dev),
17391869 __entry->ino,
17401870 __entry->namelen,
....@@ -1742,7 +1872,11 @@
17421872 __entry->namelen,
17431873 __entry->valuelen,
17441874 __entry->hashval,
1745
- __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS),
1875
+ __print_flags(__entry->attr_filter, "|",
1876
+ XFS_ATTR_FILTER_FLAGS),
1877
+ __print_flags(__entry->attr_flags, "|",
1878
+ { XATTR_CREATE, "CREATE" },
1879
+ { XATTR_REPLACE, "REPLACE" }),
17461880 __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS))
17471881 )
17481882
....@@ -1882,11 +2016,11 @@
18822016 { 0, "target" }, \
18832017 { 1, "temp" }
18842018
1885
-#define XFS_INODE_FORMAT_STR \
1886
- { 0, "invalid" }, \
1887
- { 1, "local" }, \
1888
- { 2, "extent" }, \
1889
- { 3, "btree" }
2019
+TRACE_DEFINE_ENUM(XFS_DINODE_FMT_DEV);
2020
+TRACE_DEFINE_ENUM(XFS_DINODE_FMT_LOCAL);
2021
+TRACE_DEFINE_ENUM(XFS_DINODE_FMT_EXTENTS);
2022
+TRACE_DEFINE_ENUM(XFS_DINODE_FMT_BTREE);
2023
+TRACE_DEFINE_ENUM(XFS_DINODE_FMT_UUID);
18902024
18912025 DECLARE_EVENT_CLASS(xfs_swap_extent_class,
18922026 TP_PROTO(struct xfs_inode *ip, int which),
....@@ -1904,8 +2038,8 @@
19042038 __entry->dev = VFS_I(ip)->i_sb->s_dev;
19052039 __entry->which = which;
19062040 __entry->ino = ip->i_ino;
1907
- __entry->format = ip->i_d.di_format;
1908
- __entry->nex = ip->i_d.di_nextents;
2041
+ __entry->format = ip->i_df.if_format;
2042
+ __entry->nex = ip->i_df.if_nextents;
19092043 __entry->broot_size = ip->i_df.if_broot_bytes;
19102044 __entry->fork_off = XFS_IFORK_BOFF(ip);
19112045 ),
....@@ -2175,6 +2309,14 @@
21752309 DEFINE_DISCARD_EVENT(xfs_discard_busy);
21762310
21772311 /* btree cursor events */
2312
+TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi);
2313
+TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi);
2314
+TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi);
2315
+TRACE_DEFINE_ENUM(XFS_BTNUM_INOi);
2316
+TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi);
2317
+TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi);
2318
+TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi);
2319
+
21782320 DECLARE_EVENT_CLASS(xfs_btree_cur_class,
21792321 TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp),
21802322 TP_ARGS(cur, level, bp),
....@@ -2194,9 +2336,9 @@
21942336 __entry->ptr = cur->bc_ptrs[level];
21952337 __entry->daddr = bp ? bp->b_bn : -1;
21962338 ),
2197
- TP_printk("dev %d:%d btnum %d level %d/%d ptr %d daddr 0x%llx",
2339
+ TP_printk("dev %d:%d btree %s level %d/%d ptr %d daddr 0x%llx",
21982340 MAJOR(__entry->dev), MINOR(__entry->dev),
2199
- __entry->btnum,
2341
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
22002342 __entry->level,
22012343 __entry->nlevels,
22022344 __entry->ptr,
....@@ -2273,7 +2415,7 @@
22732415 ),
22742416 TP_fast_assign(
22752417 __entry->dev = mp ? mp->m_super->s_dev : 0;
2276
- __entry->type = dfp->dfp_type->type;
2418
+ __entry->type = dfp->dfp_type;
22772419 __entry->intent = dfp->dfp_intent;
22782420 __entry->committed = dfp->dfp_done != NULL;
22792421 __entry->nr = dfp->dfp_count;
....@@ -2391,6 +2533,7 @@
23912533 DEFINE_DEFER_PENDING_EVENT(xfs_defer_cancel_list);
23922534 DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_finish);
23932535 DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_abort);
2536
+DEFINE_DEFER_PENDING_EVENT(xfs_defer_relog_intent);
23942537
23952538 #define DEFINE_BMAP_FREE_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT
23962539 DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_defer);
....@@ -2402,7 +2545,7 @@
24022545 DECLARE_EVENT_CLASS(xfs_rmap_class,
24032546 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
24042547 xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten,
2405
- struct xfs_owner_info *oinfo),
2548
+ const struct xfs_owner_info *oinfo),
24062549 TP_ARGS(mp, agno, agbno, len, unwritten, oinfo),
24072550 TP_STRUCT__entry(
24082551 __field(dev_t, dev)
....@@ -2437,7 +2580,7 @@
24372580 DEFINE_EVENT(xfs_rmap_class, name, \
24382581 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
24392582 xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \
2440
- struct xfs_owner_info *oinfo), \
2583
+ const struct xfs_owner_info *oinfo), \
24412584 TP_ARGS(mp, agno, agbno, len, unwritten, oinfo))
24422585
24432586 /* simple AG-based error/%ip tracepoint class */
....@@ -2607,10 +2750,9 @@
26072750 #define DEFINE_AG_EXTENT_EVENT(name) DEFINE_DISCARD_EVENT(name)
26082751
26092752 /* ag btree lookup tracepoint class */
2610
-#define XFS_AG_BTREE_CMP_FORMAT_STR \
2611
- { XFS_LOOKUP_EQ, "eq" }, \
2612
- { XFS_LOOKUP_LE, "le" }, \
2613
- { XFS_LOOKUP_GE, "ge" }
2753
+TRACE_DEFINE_ENUM(XFS_LOOKUP_EQi);
2754
+TRACE_DEFINE_ENUM(XFS_LOOKUP_LEi);
2755
+TRACE_DEFINE_ENUM(XFS_LOOKUP_GEi);
26142756 DECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class,
26152757 TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
26162758 xfs_agblock_t agbno, xfs_lookup_t dir),
....@@ -3052,8 +3194,7 @@
30523194 DEFINE_INODE_EVENT(xfs_reflink_set_inode_flag);
30533195 DEFINE_INODE_EVENT(xfs_reflink_unset_inode_flag);
30543196 DEFINE_ITRUNC_EVENT(xfs_reflink_update_inode_size);
3055
-DEFINE_IOMAP_EVENT(xfs_reflink_remap_imap);
3056
-TRACE_EVENT(xfs_reflink_remap_blocks_loop,
3197
+TRACE_EVENT(xfs_reflink_remap_blocks,
30573198 TP_PROTO(struct xfs_inode *src, xfs_fileoff_t soffset,
30583199 xfs_filblks_t len, struct xfs_inode *dest,
30593200 xfs_fileoff_t doffset),
....@@ -3084,59 +3225,14 @@
30843225 __entry->dest_ino,
30853226 __entry->dest_lblk)
30863227 );
3087
-TRACE_EVENT(xfs_reflink_punch_range,
3088
- TP_PROTO(struct xfs_inode *ip, xfs_fileoff_t lblk,
3089
- xfs_extlen_t len),
3090
- TP_ARGS(ip, lblk, len),
3091
- TP_STRUCT__entry(
3092
- __field(dev_t, dev)
3093
- __field(xfs_ino_t, ino)
3094
- __field(xfs_fileoff_t, lblk)
3095
- __field(xfs_extlen_t, len)
3096
- ),
3097
- TP_fast_assign(
3098
- __entry->dev = VFS_I(ip)->i_sb->s_dev;
3099
- __entry->ino = ip->i_ino;
3100
- __entry->lblk = lblk;
3101
- __entry->len = len;
3102
- ),
3103
- TP_printk("dev %d:%d ino 0x%llx lblk 0x%llx len 0x%x",
3104
- MAJOR(__entry->dev), MINOR(__entry->dev),
3105
- __entry->ino,
3106
- __entry->lblk,
3107
- __entry->len)
3108
-);
3109
-TRACE_EVENT(xfs_reflink_remap,
3110
- TP_PROTO(struct xfs_inode *ip, xfs_fileoff_t lblk,
3111
- xfs_extlen_t len, xfs_fsblock_t new_pblk),
3112
- TP_ARGS(ip, lblk, len, new_pblk),
3113
- TP_STRUCT__entry(
3114
- __field(dev_t, dev)
3115
- __field(xfs_ino_t, ino)
3116
- __field(xfs_fileoff_t, lblk)
3117
- __field(xfs_extlen_t, len)
3118
- __field(xfs_fsblock_t, new_pblk)
3119
- ),
3120
- TP_fast_assign(
3121
- __entry->dev = VFS_I(ip)->i_sb->s_dev;
3122
- __entry->ino = ip->i_ino;
3123
- __entry->lblk = lblk;
3124
- __entry->len = len;
3125
- __entry->new_pblk = new_pblk;
3126
- ),
3127
- TP_printk("dev %d:%d ino 0x%llx lblk 0x%llx len 0x%x new_pblk %llu",
3128
- MAJOR(__entry->dev), MINOR(__entry->dev),
3129
- __entry->ino,
3130
- __entry->lblk,
3131
- __entry->len,
3132
- __entry->new_pblk)
3133
-);
31343228 DEFINE_DOUBLE_IO_EVENT(xfs_reflink_remap_range);
31353229 DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_range_error);
31363230 DEFINE_INODE_ERROR_EVENT(xfs_reflink_set_inode_flag_error);
31373231 DEFINE_INODE_ERROR_EVENT(xfs_reflink_update_inode_size_error);
31383232 DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_blocks_error);
31393233 DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_extent_error);
3234
+DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_src);
3235
+DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_dest);
31403236
31413237 /* dedupe tracepoints */
31423238 DEFINE_DOUBLE_IO_EVENT(xfs_reflink_compare_extents);
....@@ -3176,12 +3272,9 @@
31763272
31773273 /* copy on write */
31783274 DEFINE_INODE_IREC_EVENT(xfs_reflink_trim_around_shared);
3179
-DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_alloc);
31803275 DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_found);
31813276 DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_enospc);
31823277 DEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow);
3183
-
3184
-DEFINE_RW_EVENT(xfs_reflink_reserve_cow);
31853278
31863279 DEFINE_SIMPLE_IO_EVENT(xfs_reflink_bounce_dio_write);
31873280
....@@ -3343,8 +3436,440 @@
33433436 DEFINE_TRANS_EVENT(xfs_trans_free);
33443437 DEFINE_TRANS_EVENT(xfs_trans_roll);
33453438 DEFINE_TRANS_EVENT(xfs_trans_add_item);
3439
+DEFINE_TRANS_EVENT(xfs_trans_commit_items);
33463440 DEFINE_TRANS_EVENT(xfs_trans_free_items);
33473441
3442
+TRACE_EVENT(xfs_iunlink_update_bucket,
3443
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int bucket,
3444
+ xfs_agino_t old_ptr, xfs_agino_t new_ptr),
3445
+ TP_ARGS(mp, agno, bucket, old_ptr, new_ptr),
3446
+ TP_STRUCT__entry(
3447
+ __field(dev_t, dev)
3448
+ __field(xfs_agnumber_t, agno)
3449
+ __field(unsigned int, bucket)
3450
+ __field(xfs_agino_t, old_ptr)
3451
+ __field(xfs_agino_t, new_ptr)
3452
+ ),
3453
+ TP_fast_assign(
3454
+ __entry->dev = mp->m_super->s_dev;
3455
+ __entry->agno = agno;
3456
+ __entry->bucket = bucket;
3457
+ __entry->old_ptr = old_ptr;
3458
+ __entry->new_ptr = new_ptr;
3459
+ ),
3460
+ TP_printk("dev %d:%d agno %u bucket %u old 0x%x new 0x%x",
3461
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3462
+ __entry->agno,
3463
+ __entry->bucket,
3464
+ __entry->old_ptr,
3465
+ __entry->new_ptr)
3466
+);
3467
+
3468
+TRACE_EVENT(xfs_iunlink_update_dinode,
3469
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino,
3470
+ xfs_agino_t old_ptr, xfs_agino_t new_ptr),
3471
+ TP_ARGS(mp, agno, agino, old_ptr, new_ptr),
3472
+ TP_STRUCT__entry(
3473
+ __field(dev_t, dev)
3474
+ __field(xfs_agnumber_t, agno)
3475
+ __field(xfs_agino_t, agino)
3476
+ __field(xfs_agino_t, old_ptr)
3477
+ __field(xfs_agino_t, new_ptr)
3478
+ ),
3479
+ TP_fast_assign(
3480
+ __entry->dev = mp->m_super->s_dev;
3481
+ __entry->agno = agno;
3482
+ __entry->agino = agino;
3483
+ __entry->old_ptr = old_ptr;
3484
+ __entry->new_ptr = new_ptr;
3485
+ ),
3486
+ TP_printk("dev %d:%d agno %u agino 0x%x old 0x%x new 0x%x",
3487
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3488
+ __entry->agno,
3489
+ __entry->agino,
3490
+ __entry->old_ptr,
3491
+ __entry->new_ptr)
3492
+);
3493
+
3494
+DECLARE_EVENT_CLASS(xfs_ag_inode_class,
3495
+ TP_PROTO(struct xfs_inode *ip),
3496
+ TP_ARGS(ip),
3497
+ TP_STRUCT__entry(
3498
+ __field(dev_t, dev)
3499
+ __field(xfs_agnumber_t, agno)
3500
+ __field(xfs_agino_t, agino)
3501
+ ),
3502
+ TP_fast_assign(
3503
+ __entry->dev = VFS_I(ip)->i_sb->s_dev;
3504
+ __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino);
3505
+ __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino);
3506
+ ),
3507
+ TP_printk("dev %d:%d agno %u agino %u",
3508
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3509
+ __entry->agno, __entry->agino)
3510
+)
3511
+
3512
+#define DEFINE_AGINODE_EVENT(name) \
3513
+DEFINE_EVENT(xfs_ag_inode_class, name, \
3514
+ TP_PROTO(struct xfs_inode *ip), \
3515
+ TP_ARGS(ip))
3516
+DEFINE_AGINODE_EVENT(xfs_iunlink);
3517
+DEFINE_AGINODE_EVENT(xfs_iunlink_remove);
3518
+DEFINE_AG_EVENT(xfs_iunlink_map_prev_fallback);
3519
+
3520
+DECLARE_EVENT_CLASS(xfs_fs_corrupt_class,
3521
+ TP_PROTO(struct xfs_mount *mp, unsigned int flags),
3522
+ TP_ARGS(mp, flags),
3523
+ TP_STRUCT__entry(
3524
+ __field(dev_t, dev)
3525
+ __field(unsigned int, flags)
3526
+ ),
3527
+ TP_fast_assign(
3528
+ __entry->dev = mp->m_super->s_dev;
3529
+ __entry->flags = flags;
3530
+ ),
3531
+ TP_printk("dev %d:%d flags 0x%x",
3532
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3533
+ __entry->flags)
3534
+);
3535
+#define DEFINE_FS_CORRUPT_EVENT(name) \
3536
+DEFINE_EVENT(xfs_fs_corrupt_class, name, \
3537
+ TP_PROTO(struct xfs_mount *mp, unsigned int flags), \
3538
+ TP_ARGS(mp, flags))
3539
+DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_sick);
3540
+DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_healthy);
3541
+DEFINE_FS_CORRUPT_EVENT(xfs_fs_unfixed_corruption);
3542
+DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_sick);
3543
+DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_healthy);
3544
+DEFINE_FS_CORRUPT_EVENT(xfs_rt_unfixed_corruption);
3545
+
3546
+DECLARE_EVENT_CLASS(xfs_ag_corrupt_class,
3547
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int flags),
3548
+ TP_ARGS(mp, agno, flags),
3549
+ TP_STRUCT__entry(
3550
+ __field(dev_t, dev)
3551
+ __field(xfs_agnumber_t, agno)
3552
+ __field(unsigned int, flags)
3553
+ ),
3554
+ TP_fast_assign(
3555
+ __entry->dev = mp->m_super->s_dev;
3556
+ __entry->agno = agno;
3557
+ __entry->flags = flags;
3558
+ ),
3559
+ TP_printk("dev %d:%d agno %u flags 0x%x",
3560
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3561
+ __entry->agno, __entry->flags)
3562
+);
3563
+#define DEFINE_AG_CORRUPT_EVENT(name) \
3564
+DEFINE_EVENT(xfs_ag_corrupt_class, name, \
3565
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
3566
+ unsigned int flags), \
3567
+ TP_ARGS(mp, agno, flags))
3568
+DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_sick);
3569
+DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_healthy);
3570
+DEFINE_AG_CORRUPT_EVENT(xfs_ag_unfixed_corruption);
3571
+
3572
+DECLARE_EVENT_CLASS(xfs_inode_corrupt_class,
3573
+ TP_PROTO(struct xfs_inode *ip, unsigned int flags),
3574
+ TP_ARGS(ip, flags),
3575
+ TP_STRUCT__entry(
3576
+ __field(dev_t, dev)
3577
+ __field(xfs_ino_t, ino)
3578
+ __field(unsigned int, flags)
3579
+ ),
3580
+ TP_fast_assign(
3581
+ __entry->dev = ip->i_mount->m_super->s_dev;
3582
+ __entry->ino = ip->i_ino;
3583
+ __entry->flags = flags;
3584
+ ),
3585
+ TP_printk("dev %d:%d ino 0x%llx flags 0x%x",
3586
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3587
+ __entry->ino, __entry->flags)
3588
+);
3589
+#define DEFINE_INODE_CORRUPT_EVENT(name) \
3590
+DEFINE_EVENT(xfs_inode_corrupt_class, name, \
3591
+ TP_PROTO(struct xfs_inode *ip, unsigned int flags), \
3592
+ TP_ARGS(ip, flags))
3593
+DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_sick);
3594
+DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_healthy);
3595
+
3596
+TRACE_EVENT(xfs_iwalk_ag,
3597
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
3598
+ xfs_agino_t startino),
3599
+ TP_ARGS(mp, agno, startino),
3600
+ TP_STRUCT__entry(
3601
+ __field(dev_t, dev)
3602
+ __field(xfs_agnumber_t, agno)
3603
+ __field(xfs_agino_t, startino)
3604
+ ),
3605
+ TP_fast_assign(
3606
+ __entry->dev = mp->m_super->s_dev;
3607
+ __entry->agno = agno;
3608
+ __entry->startino = startino;
3609
+ ),
3610
+ TP_printk("dev %d:%d agno %d startino %u",
3611
+ MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno,
3612
+ __entry->startino)
3613
+)
3614
+
3615
+TRACE_EVENT(xfs_iwalk_ag_rec,
3616
+ TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
3617
+ struct xfs_inobt_rec_incore *irec),
3618
+ TP_ARGS(mp, agno, irec),
3619
+ TP_STRUCT__entry(
3620
+ __field(dev_t, dev)
3621
+ __field(xfs_agnumber_t, agno)
3622
+ __field(xfs_agino_t, startino)
3623
+ __field(uint64_t, freemask)
3624
+ ),
3625
+ TP_fast_assign(
3626
+ __entry->dev = mp->m_super->s_dev;
3627
+ __entry->agno = agno;
3628
+ __entry->startino = irec->ir_startino;
3629
+ __entry->freemask = irec->ir_free;
3630
+ ),
3631
+ TP_printk("dev %d:%d agno %d startino %u freemask 0x%llx",
3632
+ MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno,
3633
+ __entry->startino, __entry->freemask)
3634
+)
3635
+
3636
+TRACE_EVENT(xfs_pwork_init,
3637
+ TP_PROTO(struct xfs_mount *mp, unsigned int nr_threads, pid_t pid),
3638
+ TP_ARGS(mp, nr_threads, pid),
3639
+ TP_STRUCT__entry(
3640
+ __field(dev_t, dev)
3641
+ __field(unsigned int, nr_threads)
3642
+ __field(pid_t, pid)
3643
+ ),
3644
+ TP_fast_assign(
3645
+ __entry->dev = mp->m_super->s_dev;
3646
+ __entry->nr_threads = nr_threads;
3647
+ __entry->pid = pid;
3648
+ ),
3649
+ TP_printk("dev %d:%d nr_threads %u pid %u",
3650
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3651
+ __entry->nr_threads, __entry->pid)
3652
+)
3653
+
3654
+DECLARE_EVENT_CLASS(xfs_kmem_class,
3655
+ TP_PROTO(ssize_t size, int flags, unsigned long caller_ip),
3656
+ TP_ARGS(size, flags, caller_ip),
3657
+ TP_STRUCT__entry(
3658
+ __field(ssize_t, size)
3659
+ __field(int, flags)
3660
+ __field(unsigned long, caller_ip)
3661
+ ),
3662
+ TP_fast_assign(
3663
+ __entry->size = size;
3664
+ __entry->flags = flags;
3665
+ __entry->caller_ip = caller_ip;
3666
+ ),
3667
+ TP_printk("size %zd flags 0x%x caller %pS",
3668
+ __entry->size,
3669
+ __entry->flags,
3670
+ (char *)__entry->caller_ip)
3671
+)
3672
+
3673
+#define DEFINE_KMEM_EVENT(name) \
3674
+DEFINE_EVENT(xfs_kmem_class, name, \
3675
+ TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), \
3676
+ TP_ARGS(size, flags, caller_ip))
3677
+DEFINE_KMEM_EVENT(kmem_alloc);
3678
+DEFINE_KMEM_EVENT(kmem_alloc_io);
3679
+DEFINE_KMEM_EVENT(kmem_alloc_large);
3680
+
3681
+TRACE_EVENT(xfs_check_new_dalign,
3682
+ TP_PROTO(struct xfs_mount *mp, int new_dalign, xfs_ino_t calc_rootino),
3683
+ TP_ARGS(mp, new_dalign, calc_rootino),
3684
+ TP_STRUCT__entry(
3685
+ __field(dev_t, dev)
3686
+ __field(int, new_dalign)
3687
+ __field(xfs_ino_t, sb_rootino)
3688
+ __field(xfs_ino_t, calc_rootino)
3689
+ ),
3690
+ TP_fast_assign(
3691
+ __entry->dev = mp->m_super->s_dev;
3692
+ __entry->new_dalign = new_dalign;
3693
+ __entry->sb_rootino = mp->m_sb.sb_rootino;
3694
+ __entry->calc_rootino = calc_rootino;
3695
+ ),
3696
+ TP_printk("dev %d:%d new_dalign %d sb_rootino %llu calc_rootino %llu",
3697
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3698
+ __entry->new_dalign, __entry->sb_rootino,
3699
+ __entry->calc_rootino)
3700
+)
3701
+
3702
+TRACE_EVENT(xfs_btree_commit_afakeroot,
3703
+ TP_PROTO(struct xfs_btree_cur *cur),
3704
+ TP_ARGS(cur),
3705
+ TP_STRUCT__entry(
3706
+ __field(dev_t, dev)
3707
+ __field(xfs_btnum_t, btnum)
3708
+ __field(xfs_agnumber_t, agno)
3709
+ __field(xfs_agblock_t, agbno)
3710
+ __field(unsigned int, levels)
3711
+ __field(unsigned int, blocks)
3712
+ ),
3713
+ TP_fast_assign(
3714
+ __entry->dev = cur->bc_mp->m_super->s_dev;
3715
+ __entry->btnum = cur->bc_btnum;
3716
+ __entry->agno = cur->bc_ag.agno;
3717
+ __entry->agbno = cur->bc_ag.afake->af_root;
3718
+ __entry->levels = cur->bc_ag.afake->af_levels;
3719
+ __entry->blocks = cur->bc_ag.afake->af_blocks;
3720
+ ),
3721
+ TP_printk("dev %d:%d btree %s ag %u levels %u blocks %u root %u",
3722
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3723
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3724
+ __entry->agno,
3725
+ __entry->levels,
3726
+ __entry->blocks,
3727
+ __entry->agbno)
3728
+)
3729
+
3730
+TRACE_EVENT(xfs_btree_commit_ifakeroot,
3731
+ TP_PROTO(struct xfs_btree_cur *cur),
3732
+ TP_ARGS(cur),
3733
+ TP_STRUCT__entry(
3734
+ __field(dev_t, dev)
3735
+ __field(xfs_btnum_t, btnum)
3736
+ __field(xfs_agnumber_t, agno)
3737
+ __field(xfs_agino_t, agino)
3738
+ __field(unsigned int, levels)
3739
+ __field(unsigned int, blocks)
3740
+ __field(int, whichfork)
3741
+ ),
3742
+ TP_fast_assign(
3743
+ __entry->dev = cur->bc_mp->m_super->s_dev;
3744
+ __entry->btnum = cur->bc_btnum;
3745
+ __entry->agno = XFS_INO_TO_AGNO(cur->bc_mp,
3746
+ cur->bc_ino.ip->i_ino);
3747
+ __entry->agino = XFS_INO_TO_AGINO(cur->bc_mp,
3748
+ cur->bc_ino.ip->i_ino);
3749
+ __entry->levels = cur->bc_ino.ifake->if_levels;
3750
+ __entry->blocks = cur->bc_ino.ifake->if_blocks;
3751
+ __entry->whichfork = cur->bc_ino.whichfork;
3752
+ ),
3753
+ TP_printk("dev %d:%d btree %s ag %u agino %u whichfork %s levels %u blocks %u",
3754
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3755
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3756
+ __entry->agno,
3757
+ __entry->agino,
3758
+ __entry->whichfork == XFS_ATTR_FORK ? "attr" : "data",
3759
+ __entry->levels,
3760
+ __entry->blocks)
3761
+)
3762
+
3763
+TRACE_EVENT(xfs_btree_bload_level_geometry,
3764
+ TP_PROTO(struct xfs_btree_cur *cur, unsigned int level,
3765
+ uint64_t nr_this_level, unsigned int nr_per_block,
3766
+ unsigned int desired_npb, uint64_t blocks,
3767
+ uint64_t blocks_with_extra),
3768
+ TP_ARGS(cur, level, nr_this_level, nr_per_block, desired_npb, blocks,
3769
+ blocks_with_extra),
3770
+ TP_STRUCT__entry(
3771
+ __field(dev_t, dev)
3772
+ __field(xfs_btnum_t, btnum)
3773
+ __field(unsigned int, level)
3774
+ __field(unsigned int, nlevels)
3775
+ __field(uint64_t, nr_this_level)
3776
+ __field(unsigned int, nr_per_block)
3777
+ __field(unsigned int, desired_npb)
3778
+ __field(unsigned long long, blocks)
3779
+ __field(unsigned long long, blocks_with_extra)
3780
+ ),
3781
+ TP_fast_assign(
3782
+ __entry->dev = cur->bc_mp->m_super->s_dev;
3783
+ __entry->btnum = cur->bc_btnum;
3784
+ __entry->level = level;
3785
+ __entry->nlevels = cur->bc_nlevels;
3786
+ __entry->nr_this_level = nr_this_level;
3787
+ __entry->nr_per_block = nr_per_block;
3788
+ __entry->desired_npb = desired_npb;
3789
+ __entry->blocks = blocks;
3790
+ __entry->blocks_with_extra = blocks_with_extra;
3791
+ ),
3792
+ TP_printk("dev %d:%d btree %s level %u/%u nr_this_level %llu nr_per_block %u desired_npb %u blocks %llu blocks_with_extra %llu",
3793
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3794
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3795
+ __entry->level,
3796
+ __entry->nlevels,
3797
+ __entry->nr_this_level,
3798
+ __entry->nr_per_block,
3799
+ __entry->desired_npb,
3800
+ __entry->blocks,
3801
+ __entry->blocks_with_extra)
3802
+)
3803
+
3804
+TRACE_EVENT(xfs_btree_bload_block,
3805
+ TP_PROTO(struct xfs_btree_cur *cur, unsigned int level,
3806
+ uint64_t block_idx, uint64_t nr_blocks,
3807
+ union xfs_btree_ptr *ptr, unsigned int nr_records),
3808
+ TP_ARGS(cur, level, block_idx, nr_blocks, ptr, nr_records),
3809
+ TP_STRUCT__entry(
3810
+ __field(dev_t, dev)
3811
+ __field(xfs_btnum_t, btnum)
3812
+ __field(unsigned int, level)
3813
+ __field(unsigned long long, block_idx)
3814
+ __field(unsigned long long, nr_blocks)
3815
+ __field(xfs_agnumber_t, agno)
3816
+ __field(xfs_agblock_t, agbno)
3817
+ __field(unsigned int, nr_records)
3818
+ ),
3819
+ TP_fast_assign(
3820
+ __entry->dev = cur->bc_mp->m_super->s_dev;
3821
+ __entry->btnum = cur->bc_btnum;
3822
+ __entry->level = level;
3823
+ __entry->block_idx = block_idx;
3824
+ __entry->nr_blocks = nr_blocks;
3825
+ if (cur->bc_flags & XFS_BTREE_LONG_PTRS) {
3826
+ xfs_fsblock_t fsb = be64_to_cpu(ptr->l);
3827
+
3828
+ __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsb);
3829
+ __entry->agbno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsb);
3830
+ } else {
3831
+ __entry->agno = cur->bc_ag.agno;
3832
+ __entry->agbno = be32_to_cpu(ptr->s);
3833
+ }
3834
+ __entry->nr_records = nr_records;
3835
+ ),
3836
+ TP_printk("dev %d:%d btree %s level %u block %llu/%llu fsb (%u/%u) recs %u",
3837
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3838
+ __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3839
+ __entry->level,
3840
+ __entry->block_idx,
3841
+ __entry->nr_blocks,
3842
+ __entry->agno,
3843
+ __entry->agbno,
3844
+ __entry->nr_records)
3845
+)
3846
+
3847
+DECLARE_EVENT_CLASS(xfs_timestamp_range_class,
3848
+ TP_PROTO(struct xfs_mount *mp, time64_t min, time64_t max),
3849
+ TP_ARGS(mp, min, max),
3850
+ TP_STRUCT__entry(
3851
+ __field(dev_t, dev)
3852
+ __field(long long, min)
3853
+ __field(long long, max)
3854
+ ),
3855
+ TP_fast_assign(
3856
+ __entry->dev = mp->m_super->s_dev;
3857
+ __entry->min = min;
3858
+ __entry->max = max;
3859
+ ),
3860
+ TP_printk("dev %d:%d min %lld max %lld",
3861
+ MAJOR(__entry->dev), MINOR(__entry->dev),
3862
+ __entry->min,
3863
+ __entry->max)
3864
+)
3865
+
3866
+#define DEFINE_TIMESTAMP_RANGE_EVENT(name) \
3867
+DEFINE_EVENT(xfs_timestamp_range_class, name, \
3868
+ TP_PROTO(struct xfs_mount *mp, long long min, long long max), \
3869
+ TP_ARGS(mp, min, max))
3870
+DEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range);
3871
+DEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range);
3872
+
33483873 #endif /* _TRACE_XFS_H */
33493874
33503875 #undef TRACE_INCLUDE_PATH