.. | .. |
---|
23 | 23 | struct xlog_ticket; |
---|
24 | 24 | struct xlog_recover; |
---|
25 | 25 | struct xlog_recover_item; |
---|
| 26 | +struct xlog_rec_header; |
---|
26 | 27 | struct xfs_buf_log_format; |
---|
27 | 28 | struct xfs_inode_log_format; |
---|
28 | 29 | struct xfs_bmbt_irec; |
---|
.. | .. |
---|
30 | 31 | struct xfs_refcount_irec; |
---|
31 | 32 | struct xfs_fsmap; |
---|
32 | 33 | 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" } |
---|
33 | 45 | |
---|
34 | 46 | DECLARE_EVENT_CLASS(xfs_attr_list_class, |
---|
35 | 47 | TP_PROTO(struct xfs_attr_list_context *ctx), |
---|
.. | .. |
---|
40 | 52 | __field(u32, hashval) |
---|
41 | 53 | __field(u32, blkno) |
---|
42 | 54 | __field(u32, offset) |
---|
43 | | - __field(void *, alist) |
---|
| 55 | + __field(void *, buffer) |
---|
44 | 56 | __field(int, bufsize) |
---|
45 | 57 | __field(int, count) |
---|
46 | 58 | __field(int, firstu) |
---|
47 | 59 | __field(int, dupcnt) |
---|
48 | | - __field(int, flags) |
---|
| 60 | + __field(unsigned int, attr_filter) |
---|
49 | 61 | ), |
---|
50 | 62 | TP_fast_assign( |
---|
51 | 63 | __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; |
---|
52 | 64 | __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; |
---|
57 | 69 | __entry->bufsize = ctx->bufsize; |
---|
58 | 70 | __entry->count = ctx->count; |
---|
59 | 71 | __entry->firstu = ctx->firstu; |
---|
60 | | - __entry->flags = ctx->flags; |
---|
| 72 | + __entry->attr_filter = ctx->attr_filter; |
---|
61 | 73 | ), |
---|
62 | 74 | 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", |
---|
64 | 76 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
65 | 77 | __entry->ino, |
---|
66 | 78 | __entry->hashval, |
---|
67 | 79 | __entry->blkno, |
---|
68 | 80 | __entry->offset, |
---|
69 | 81 | __entry->dupcnt, |
---|
70 | | - __entry->alist, |
---|
| 82 | + __entry->buffer, |
---|
71 | 83 | __entry->bufsize, |
---|
72 | 84 | __entry->count, |
---|
73 | 85 | __entry->firstu, |
---|
74 | | - __entry->flags, |
---|
75 | | - __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS) |
---|
| 86 | + __print_flags(__entry->attr_filter, "|", |
---|
| 87 | + XFS_ATTR_FILTER_FLAGS) |
---|
76 | 88 | ) |
---|
77 | 89 | ) |
---|
78 | 90 | |
---|
.. | .. |
---|
164 | 176 | __field(u32, hashval) |
---|
165 | 177 | __field(u32, blkno) |
---|
166 | 178 | __field(u32, offset) |
---|
167 | | - __field(void *, alist) |
---|
| 179 | + __field(void *, buffer) |
---|
168 | 180 | __field(int, bufsize) |
---|
169 | 181 | __field(int, count) |
---|
170 | 182 | __field(int, firstu) |
---|
171 | 183 | __field(int, dupcnt) |
---|
172 | | - __field(int, flags) |
---|
| 184 | + __field(unsigned int, attr_filter) |
---|
173 | 185 | __field(u32, bt_hashval) |
---|
174 | 186 | __field(u32, bt_before) |
---|
175 | 187 | ), |
---|
176 | 188 | TP_fast_assign( |
---|
177 | 189 | __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; |
---|
178 | 190 | __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; |
---|
183 | 195 | __entry->bufsize = ctx->bufsize; |
---|
184 | 196 | __entry->count = ctx->count; |
---|
185 | 197 | __entry->firstu = ctx->firstu; |
---|
186 | | - __entry->flags = ctx->flags; |
---|
| 198 | + __entry->attr_filter = ctx->attr_filter; |
---|
187 | 199 | __entry->bt_hashval = be32_to_cpu(btree->hashval); |
---|
188 | 200 | __entry->bt_before = be32_to_cpu(btree->before); |
---|
189 | 201 | ), |
---|
190 | 202 | 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 " |
---|
192 | 204 | "node hashval %u, node before %u", |
---|
193 | 205 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
194 | 206 | __entry->ino, |
---|
.. | .. |
---|
196 | 208 | __entry->blkno, |
---|
197 | 209 | __entry->offset, |
---|
198 | 210 | __entry->dupcnt, |
---|
199 | | - __entry->alist, |
---|
| 211 | + __entry->buffer, |
---|
200 | 212 | __entry->bufsize, |
---|
201 | 213 | __entry->count, |
---|
202 | 214 | __entry->firstu, |
---|
203 | | - __entry->flags, |
---|
204 | | - __print_flags(__entry->flags, "|", XFS_ATTR_FLAGS), |
---|
| 215 | + __print_flags(__entry->attr_filter, "|", |
---|
| 216 | + XFS_ATTR_FILTER_FLAGS), |
---|
205 | 217 | __entry->bt_hashval, |
---|
206 | 218 | __entry->bt_before) |
---|
207 | 219 | ); |
---|
.. | .. |
---|
213 | 225 | TP_STRUCT__entry( |
---|
214 | 226 | __field(dev_t, dev) |
---|
215 | 227 | __field(xfs_ino_t, ino) |
---|
216 | | - __field(void *, leaf); |
---|
217 | | - __field(int, pos); |
---|
| 228 | + __field(void *, leaf) |
---|
| 229 | + __field(int, pos) |
---|
218 | 230 | __field(xfs_fileoff_t, startoff) |
---|
219 | 231 | __field(xfs_fsblock_t, startblock) |
---|
220 | 232 | __field(xfs_filblks_t, blockcount) |
---|
.. | .. |
---|
280 | 292 | ), |
---|
281 | 293 | TP_fast_assign( |
---|
282 | 294 | __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; |
---|
284 | 299 | __entry->nblks = bp->b_length; |
---|
285 | 300 | __entry->hold = atomic_read(&bp->b_hold); |
---|
286 | 301 | __entry->pincount = atomic_read(&bp->b_pin_count); |
---|
.. | .. |
---|
323 | 338 | DEFINE_BUF_EVENT(xfs_buf_delwri_pushbuf); |
---|
324 | 339 | DEFINE_BUF_EVENT(xfs_buf_get_uncached); |
---|
325 | 340 | DEFINE_BUF_EVENT(xfs_buf_item_relse); |
---|
326 | | -DEFINE_BUF_EVENT(xfs_buf_item_iodone_async); |
---|
| 341 | +DEFINE_BUF_EVENT(xfs_buf_iodone_async); |
---|
327 | 342 | DEFINE_BUF_EVENT(xfs_buf_error_relse); |
---|
328 | 343 | DEFINE_BUF_EVENT(xfs_buf_wait_buftarg); |
---|
329 | 344 | DEFINE_BUF_EVENT(xfs_trans_read_buf_shut); |
---|
.. | .. |
---|
472 | 487 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin); |
---|
473 | 488 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin); |
---|
474 | 489 | 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); |
---|
476 | 491 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); |
---|
477 | 492 | DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); |
---|
478 | 493 | DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); |
---|
.. | .. |
---|
637 | 652 | DEFINE_INODE_EVENT(xfs_inode_clear_cowblocks_tag); |
---|
638 | 653 | DEFINE_INODE_EVENT(xfs_inode_free_cowblocks_invalid); |
---|
639 | 654 | |
---|
| 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 | + |
---|
640 | 665 | TRACE_EVENT(xfs_filemap_fault, |
---|
641 | 666 | TP_PROTO(struct xfs_inode *ip, enum page_entry_size pe_size, |
---|
642 | 667 | bool write_fault), |
---|
.. | .. |
---|
707 | 732 | __entry->writeio_blocks = writeio_blocks; |
---|
708 | 733 | ), |
---|
709 | 734 | TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d " |
---|
710 | | - "m_writeio_blocks %u", |
---|
| 735 | + "m_allocsize_blocks %u", |
---|
711 | 736 | MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, |
---|
712 | 737 | __entry->blocks, __entry->shift, __entry->writeio_blocks) |
---|
713 | 738 | ) |
---|
.. | .. |
---|
840 | 865 | TP_STRUCT__entry( |
---|
841 | 866 | __field(dev_t, dev) |
---|
842 | 867 | __field(u32, id) |
---|
| 868 | + __field(xfs_dqtype_t, type) |
---|
843 | 869 | __field(unsigned, flags) |
---|
844 | 870 | __field(unsigned, nrefs) |
---|
845 | 871 | __field(unsigned long long, res_bcount) |
---|
| 872 | + __field(unsigned long long, res_rtbcount) |
---|
| 873 | + __field(unsigned long long, res_icount) |
---|
| 874 | + |
---|
846 | 875 | __field(unsigned long long, bcount) |
---|
| 876 | + __field(unsigned long long, rtbcount) |
---|
847 | 877 | __field(unsigned long long, icount) |
---|
| 878 | + |
---|
848 | 879 | __field(unsigned long long, blk_hardlimit) |
---|
849 | 880 | __field(unsigned long long, blk_softlimit) |
---|
| 881 | + __field(unsigned long long, rtb_hardlimit) |
---|
| 882 | + __field(unsigned long long, rtb_softlimit) |
---|
850 | 883 | __field(unsigned long long, ino_hardlimit) |
---|
851 | 884 | __field(unsigned long long, ino_softlimit) |
---|
852 | | - ), \ |
---|
| 885 | + ), |
---|
853 | 886 | TP_fast_assign( |
---|
854 | 887 | __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; |
---|
857 | 891 | __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; |
---|
869 | 907 | ), |
---|
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 " |
---|
871 | 910 | "bcnt 0x%llx bhardlimit 0x%llx bsoftlimit 0x%llx " |
---|
| 911 | + "rtbcnt 0x%llx rtbhardlimit 0x%llx rtbsoftlimit 0x%llx " |
---|
872 | 912 | "icnt 0x%llx ihardlimit 0x%llx isoftlimit 0x%llx]", |
---|
873 | 913 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
874 | 914 | __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), |
---|
876 | 917 | __entry->nrefs, |
---|
877 | 918 | __entry->res_bcount, |
---|
| 919 | + __entry->res_rtbcount, |
---|
| 920 | + __entry->res_icount, |
---|
878 | 921 | __entry->bcount, |
---|
879 | 922 | __entry->blk_hardlimit, |
---|
880 | 923 | __entry->blk_softlimit, |
---|
| 924 | + __entry->rtbcount, |
---|
| 925 | + __entry->rtb_hardlimit, |
---|
| 926 | + __entry->rtb_softlimit, |
---|
881 | 927 | __entry->icount, |
---|
882 | 928 | __entry->ino_hardlimit, |
---|
883 | 929 | __entry->ino_softlimit) |
---|
.. | .. |
---|
908 | 954 | DEFINE_DQUOT_EVENT(xfs_dqflush); |
---|
909 | 955 | DEFINE_DQUOT_EVENT(xfs_dqflush_force); |
---|
910 | 956 | 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); |
---|
911 | 1076 | |
---|
912 | 1077 | DECLARE_EVENT_CLASS(xfs_loggrant_class, |
---|
913 | 1078 | TP_PROTO(struct xlog *log, struct xlog_ticket *tic), |
---|
.. | .. |
---|
977 | 1142 | DEFINE_EVENT(xfs_loggrant_class, name, \ |
---|
978 | 1143 | TP_PROTO(struct xlog *log, struct xlog_ticket *tic), \ |
---|
979 | 1144 | TP_ARGS(log, tic)) |
---|
980 | | -DEFINE_LOGGRANT_EVENT(xfs_log_done_nonperm); |
---|
981 | | -DEFINE_LOGGRANT_EVENT(xfs_log_done_perm); |
---|
982 | 1145 | DEFINE_LOGGRANT_EVENT(xfs_log_umount_write); |
---|
983 | 1146 | DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); |
---|
984 | 1147 | DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); |
---|
.. | .. |
---|
987 | 1150 | DEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit); |
---|
988 | 1151 | DEFINE_LOGGRANT_EVENT(xfs_log_regrant); |
---|
989 | 1152 | 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); |
---|
996 | 1160 | |
---|
997 | 1161 | DECLARE_EVENT_CLASS(xfs_log_item_class, |
---|
998 | 1162 | TP_PROTO(struct xfs_log_item *lip), |
---|
.. | .. |
---|
1140 | 1304 | DEFINE_RW_EVENT(xfs_file_direct_write); |
---|
1141 | 1305 | DEFINE_RW_EVENT(xfs_file_dax_write); |
---|
1142 | 1306 | |
---|
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 | | - |
---|
1208 | 1307 | DECLARE_EVENT_CLASS(xfs_imap_class, |
---|
1209 | 1308 | 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), |
---|
1212 | 1311 | TP_STRUCT__entry( |
---|
1213 | 1312 | __field(dev_t, dev) |
---|
1214 | 1313 | __field(xfs_ino_t, ino) |
---|
1215 | 1314 | __field(loff_t, size) |
---|
1216 | 1315 | __field(loff_t, offset) |
---|
1217 | 1316 | __field(size_t, count) |
---|
1218 | | - __field(int, type) |
---|
| 1317 | + __field(int, whichfork) |
---|
1219 | 1318 | __field(xfs_fileoff_t, startoff) |
---|
1220 | 1319 | __field(xfs_fsblock_t, startblock) |
---|
1221 | 1320 | __field(xfs_filblks_t, blockcount) |
---|
.. | .. |
---|
1226 | 1325 | __entry->size = ip->i_d.di_size; |
---|
1227 | 1326 | __entry->offset = offset; |
---|
1228 | 1327 | __entry->count = count; |
---|
1229 | | - __entry->type = type; |
---|
| 1328 | + __entry->whichfork = whichfork; |
---|
1230 | 1329 | __entry->startoff = irec ? irec->br_startoff : 0; |
---|
1231 | 1330 | __entry->startblock = irec ? irec->br_startblock : 0; |
---|
1232 | 1331 | __entry->blockcount = irec ? irec->br_blockcount : 0; |
---|
1233 | 1332 | ), |
---|
1234 | 1333 | 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", |
---|
1236 | 1335 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
1237 | 1336 | __entry->ino, |
---|
1238 | 1337 | __entry->size, |
---|
1239 | 1338 | __entry->offset, |
---|
1240 | 1339 | __entry->count, |
---|
1241 | | - __print_symbolic(__entry->type, XFS_IO_TYPES), |
---|
| 1340 | + __entry->whichfork == XFS_COW_FORK ? "cow" : "data", |
---|
1242 | 1341 | __entry->startoff, |
---|
1243 | 1342 | (int64_t)__entry->startblock, |
---|
1244 | 1343 | __entry->blockcount) |
---|
1245 | 1344 | ) |
---|
1246 | 1345 | |
---|
1247 | | -#define DEFINE_IOMAP_EVENT(name) \ |
---|
| 1346 | +#define DEFINE_IMAP_EVENT(name) \ |
---|
1248 | 1347 | DEFINE_EVENT(xfs_imap_class, name, \ |
---|
1249 | 1348 | 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); |
---|
1256 | 1355 | |
---|
1257 | 1356 | DECLARE_EVENT_CLASS(xfs_simple_io_class, |
---|
1258 | 1357 | TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), |
---|
.. | .. |
---|
1624 | 1723 | DEFINE_ALLOC_EVENT(xfs_alloc_exact_error); |
---|
1625 | 1724 | DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); |
---|
1626 | 1725 | 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); |
---|
1629 | 1731 | DEFINE_ALLOC_EVENT(xfs_alloc_near_error); |
---|
1630 | 1732 | DEFINE_ALLOC_EVENT(xfs_alloc_near_noentry); |
---|
1631 | 1733 | DEFINE_ALLOC_EVENT(xfs_alloc_near_busy); |
---|
.. | .. |
---|
1644 | 1746 | DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp); |
---|
1645 | 1747 | DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); |
---|
1646 | 1748 | 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 | +) |
---|
1647 | 1775 | |
---|
1648 | 1776 | DECLARE_EVENT_CLASS(xfs_da_class, |
---|
1649 | 1777 | TP_PROTO(struct xfs_da_args *args), |
---|
.. | .. |
---|
1719 | 1847 | __field(int, namelen) |
---|
1720 | 1848 | __field(int, valuelen) |
---|
1721 | 1849 | __field(xfs_dahash_t, hashval) |
---|
1722 | | - __field(int, flags) |
---|
| 1850 | + __field(unsigned int, attr_filter) |
---|
| 1851 | + __field(unsigned int, attr_flags) |
---|
1723 | 1852 | __field(int, op_flags) |
---|
1724 | 1853 | ), |
---|
1725 | 1854 | TP_fast_assign( |
---|
.. | .. |
---|
1730 | 1859 | __entry->namelen = args->namelen; |
---|
1731 | 1860 | __entry->valuelen = args->valuelen; |
---|
1732 | 1861 | __entry->hashval = args->hashval; |
---|
1733 | | - __entry->flags = args->flags; |
---|
| 1862 | + __entry->attr_filter = args->attr_filter; |
---|
| 1863 | + __entry->attr_flags = args->attr_flags; |
---|
1734 | 1864 | __entry->op_flags = args->op_flags; |
---|
1735 | 1865 | ), |
---|
1736 | 1866 | 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", |
---|
1738 | 1868 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
1739 | 1869 | __entry->ino, |
---|
1740 | 1870 | __entry->namelen, |
---|
.. | .. |
---|
1742 | 1872 | __entry->namelen, |
---|
1743 | 1873 | __entry->valuelen, |
---|
1744 | 1874 | __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" }), |
---|
1746 | 1880 | __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) |
---|
1747 | 1881 | ) |
---|
1748 | 1882 | |
---|
.. | .. |
---|
1882 | 2016 | { 0, "target" }, \ |
---|
1883 | 2017 | { 1, "temp" } |
---|
1884 | 2018 | |
---|
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); |
---|
1890 | 2024 | |
---|
1891 | 2025 | DECLARE_EVENT_CLASS(xfs_swap_extent_class, |
---|
1892 | 2026 | TP_PROTO(struct xfs_inode *ip, int which), |
---|
.. | .. |
---|
1904 | 2038 | __entry->dev = VFS_I(ip)->i_sb->s_dev; |
---|
1905 | 2039 | __entry->which = which; |
---|
1906 | 2040 | __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; |
---|
1909 | 2043 | __entry->broot_size = ip->i_df.if_broot_bytes; |
---|
1910 | 2044 | __entry->fork_off = XFS_IFORK_BOFF(ip); |
---|
1911 | 2045 | ), |
---|
.. | .. |
---|
2175 | 2309 | DEFINE_DISCARD_EVENT(xfs_discard_busy); |
---|
2176 | 2310 | |
---|
2177 | 2311 | /* 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 | + |
---|
2178 | 2320 | DECLARE_EVENT_CLASS(xfs_btree_cur_class, |
---|
2179 | 2321 | TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), |
---|
2180 | 2322 | TP_ARGS(cur, level, bp), |
---|
.. | .. |
---|
2194 | 2336 | __entry->ptr = cur->bc_ptrs[level]; |
---|
2195 | 2337 | __entry->daddr = bp ? bp->b_bn : -1; |
---|
2196 | 2338 | ), |
---|
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", |
---|
2198 | 2340 | MAJOR(__entry->dev), MINOR(__entry->dev), |
---|
2199 | | - __entry->btnum, |
---|
| 2341 | + __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), |
---|
2200 | 2342 | __entry->level, |
---|
2201 | 2343 | __entry->nlevels, |
---|
2202 | 2344 | __entry->ptr, |
---|
.. | .. |
---|
2273 | 2415 | ), |
---|
2274 | 2416 | TP_fast_assign( |
---|
2275 | 2417 | __entry->dev = mp ? mp->m_super->s_dev : 0; |
---|
2276 | | - __entry->type = dfp->dfp_type->type; |
---|
| 2418 | + __entry->type = dfp->dfp_type; |
---|
2277 | 2419 | __entry->intent = dfp->dfp_intent; |
---|
2278 | 2420 | __entry->committed = dfp->dfp_done != NULL; |
---|
2279 | 2421 | __entry->nr = dfp->dfp_count; |
---|
.. | .. |
---|
2391 | 2533 | DEFINE_DEFER_PENDING_EVENT(xfs_defer_cancel_list); |
---|
2392 | 2534 | DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_finish); |
---|
2393 | 2535 | DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_abort); |
---|
| 2536 | +DEFINE_DEFER_PENDING_EVENT(xfs_defer_relog_intent); |
---|
2394 | 2537 | |
---|
2395 | 2538 | #define DEFINE_BMAP_FREE_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT |
---|
2396 | 2539 | DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_defer); |
---|
.. | .. |
---|
2402 | 2545 | DECLARE_EVENT_CLASS(xfs_rmap_class, |
---|
2403 | 2546 | TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, |
---|
2404 | 2547 | xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, |
---|
2405 | | - struct xfs_owner_info *oinfo), |
---|
| 2548 | + const struct xfs_owner_info *oinfo), |
---|
2406 | 2549 | TP_ARGS(mp, agno, agbno, len, unwritten, oinfo), |
---|
2407 | 2550 | TP_STRUCT__entry( |
---|
2408 | 2551 | __field(dev_t, dev) |
---|
.. | .. |
---|
2437 | 2580 | DEFINE_EVENT(xfs_rmap_class, name, \ |
---|
2438 | 2581 | TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ |
---|
2439 | 2582 | xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \ |
---|
2440 | | - struct xfs_owner_info *oinfo), \ |
---|
| 2583 | + const struct xfs_owner_info *oinfo), \ |
---|
2441 | 2584 | TP_ARGS(mp, agno, agbno, len, unwritten, oinfo)) |
---|
2442 | 2585 | |
---|
2443 | 2586 | /* simple AG-based error/%ip tracepoint class */ |
---|
.. | .. |
---|
2607 | 2750 | #define DEFINE_AG_EXTENT_EVENT(name) DEFINE_DISCARD_EVENT(name) |
---|
2608 | 2751 | |
---|
2609 | 2752 | /* 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); |
---|
2614 | 2756 | DECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class, |
---|
2615 | 2757 | TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, |
---|
2616 | 2758 | xfs_agblock_t agbno, xfs_lookup_t dir), |
---|
.. | .. |
---|
3052 | 3194 | DEFINE_INODE_EVENT(xfs_reflink_set_inode_flag); |
---|
3053 | 3195 | DEFINE_INODE_EVENT(xfs_reflink_unset_inode_flag); |
---|
3054 | 3196 | 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, |
---|
3057 | 3198 | TP_PROTO(struct xfs_inode *src, xfs_fileoff_t soffset, |
---|
3058 | 3199 | xfs_filblks_t len, struct xfs_inode *dest, |
---|
3059 | 3200 | xfs_fileoff_t doffset), |
---|
.. | .. |
---|
3084 | 3225 | __entry->dest_ino, |
---|
3085 | 3226 | __entry->dest_lblk) |
---|
3086 | 3227 | ); |
---|
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 | | -); |
---|
3134 | 3228 | DEFINE_DOUBLE_IO_EVENT(xfs_reflink_remap_range); |
---|
3135 | 3229 | DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_range_error); |
---|
3136 | 3230 | DEFINE_INODE_ERROR_EVENT(xfs_reflink_set_inode_flag_error); |
---|
3137 | 3231 | DEFINE_INODE_ERROR_EVENT(xfs_reflink_update_inode_size_error); |
---|
3138 | 3232 | DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_blocks_error); |
---|
3139 | 3233 | 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); |
---|
3140 | 3236 | |
---|
3141 | 3237 | /* dedupe tracepoints */ |
---|
3142 | 3238 | DEFINE_DOUBLE_IO_EVENT(xfs_reflink_compare_extents); |
---|
.. | .. |
---|
3176 | 3272 | |
---|
3177 | 3273 | /* copy on write */ |
---|
3178 | 3274 | DEFINE_INODE_IREC_EVENT(xfs_reflink_trim_around_shared); |
---|
3179 | | -DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_alloc); |
---|
3180 | 3275 | DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_found); |
---|
3181 | 3276 | DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_enospc); |
---|
3182 | 3277 | DEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow); |
---|
3183 | | - |
---|
3184 | | -DEFINE_RW_EVENT(xfs_reflink_reserve_cow); |
---|
3185 | 3278 | |
---|
3186 | 3279 | DEFINE_SIMPLE_IO_EVENT(xfs_reflink_bounce_dio_write); |
---|
3187 | 3280 | |
---|
.. | .. |
---|
3343 | 3436 | DEFINE_TRANS_EVENT(xfs_trans_free); |
---|
3344 | 3437 | DEFINE_TRANS_EVENT(xfs_trans_roll); |
---|
3345 | 3438 | DEFINE_TRANS_EVENT(xfs_trans_add_item); |
---|
| 3439 | +DEFINE_TRANS_EVENT(xfs_trans_commit_items); |
---|
3346 | 3440 | DEFINE_TRANS_EVENT(xfs_trans_free_items); |
---|
3347 | 3441 | |
---|
| 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 | + |
---|
3348 | 3873 | #endif /* _TRACE_XFS_H */ |
---|
3349 | 3874 | |
---|
3350 | 3875 | #undef TRACE_INCLUDE_PATH |
---|