| .. | .. |
|---|
| 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 |
|---|