X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Fblock.h;h=4a0704611225c927bf17f3e66ccedc4e0b244e19;hb=edee4485348d15198bc76a4fb4ae2d27e9872364;hp=59e2fd1bed773c1494aa14331e704f2bc59f1b5b;hpb=4c996ea7e0371a6e8cd355b54604ea25eb4905c7;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/block.h b/instrumentation/events/lttng-module/block.h index 59e2fd1b..4a070461 100644 --- a/instrumentation/events/lttng-module/block.h +++ b/instrumentation/events/lttng-module/block.h @@ -11,9 +11,9 @@ #include #include -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) +#if LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) #include -#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ +#endif /* LTTNG_KERNEL_RANGE(4,11,0, 5,18,0) */ #ifndef _TRACE_BLOCK_DEF_ #define _TRACE_BLOCK_DEF_ @@ -66,6 +66,38 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, #define lttng_bio_op(bio) bio_op(bio) #define lttng_bio_rw(bio) ((bio)->bi_opf) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,18,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,162,0,0, 5,15,0,0,0,0)) +#ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM +#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ + ctf_enum(block_rq_type, type, rwbs, \ + ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ + ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ + ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ + ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ + ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ + ( 0 )))))) \ + | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ + | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ + | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ + | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ + | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) +#else +#define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ + ctf_integer(type, rwbs, \ + ( (op) == REQ_OP_WRITE ? RWBS_FLAG_WRITE : \ + ( (op) == REQ_OP_DISCARD ? RWBS_FLAG_DISCARD : \ + ( (op) == REQ_OP_SECURE_ERASE ? (RWBS_FLAG_DISCARD | RWBS_FLAG_SECURE) : \ + ( (op) == REQ_OP_FLUSH ? RWBS_FLAG_FLUSH : \ + ( (op) == REQ_OP_READ ? RWBS_FLAG_READ : \ + ( 0 )))))) \ + | ((rw) & REQ_RAHEAD ? RWBS_FLAG_RAHEAD : 0) \ + | ((rw) & REQ_SYNC ? RWBS_FLAG_SYNC : 0) \ + | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ + | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ + | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) +#endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ +#else #ifdef CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM #define blk_rwbs_ctf_integer(type, rwbs, op, rw, bytes) \ ctf_enum(block_rq_type, type, rwbs, \ @@ -95,6 +127,7 @@ LTTNG_TRACEPOINT_ENUM(block_rq_type, | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) #endif /* CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM */ +#endif #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0)) @@ -310,7 +343,34 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_abort, ) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,162,0,0, 5,15,0,0,0,0)) +/** + * block_rq_requeue - place block IO request back on a queue + * @rq: block IO operation request + * + * The block operation request @rq is being placed back into queue + * @q. For some reason the request was not completed and needs to be + * put back in the queue. + */ +LTTNG_TRACEPOINT_EVENT(block_rq_requeue, + + TP_PROTO(struct request *rq), + + TP_ARGS(rq), + + TP_FIELDS( + ctf_integer(dev_t, dev, + rq->q->disk ? disk_devt(rq->q->disk) : 0) + ctf_integer(sector_t, sector, blk_rq_trace_sector(rq)) + ctf_integer(unsigned int, nr_sector, blk_rq_trace_nr_sectors(rq)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq)) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0) \ + || LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) /** * block_rq_requeue - place block IO request back on a queue * @rq: block IO operation request @@ -380,7 +440,43 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_requeue, * do for the request. If @rq->bio is non-NULL then there is * additional work required to complete the request. */ -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,12,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,162,0,0, 5,15,0,0,0,0)) +LTTNG_TRACEPOINT_EVENT(block_rq_complete, + + TP_PROTO(struct request *rq, blk_status_t error, unsigned int nr_bytes), + + TP_ARGS(rq, error, nr_bytes), + + TP_FIELDS( + ctf_integer(dev_t, dev, + rq->q->disk ? disk_devt(rq->q->disk) : 0) + ctf_integer(sector_t, sector, blk_rq_pos(rq)) + ctf_integer(unsigned int, nr_sector, nr_bytes >> 9) + ctf_integer(int, error, blk_status_to_errno(error)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_req_op(rq), lttng_req_rw(rq), nr_bytes) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,16,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,70,0,0, 5,15,0,0,0,0)) +LTTNG_TRACEPOINT_EVENT(block_rq_complete, + + TP_PROTO(struct request *rq, blk_status_t error, unsigned int nr_bytes), + + TP_ARGS(rq, error, nr_bytes), + + TP_FIELDS( + ctf_integer(dev_t, dev, + rq->rq_disk ? disk_devt(rq->rq_disk) : 0) + ctf_integer(sector_t, sector, blk_rq_pos(rq)) + ctf_integer(unsigned int, nr_sector, nr_bytes >> 9) + ctf_integer(int, error, blk_status_to_errno(error)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_req_op(rq), lttng_req_rw(rq), nr_bytes) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,12,0)) LTTNG_TRACEPOINT_EVENT(block_rq_complete, TP_PROTO(struct request *rq, int error, unsigned int nr_bytes), @@ -502,7 +598,29 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_complete, #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */ -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,162,0,0, 5,15,0,0,0,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(block_rq, + + TP_PROTO(struct request *rq), + + TP_ARGS(rq), + + TP_FIELDS( + ctf_integer(dev_t, dev, + rq->q->disk ? disk_devt(rq->q->disk) : 0) + ctf_integer(sector_t, sector, blk_rq_trace_sector(rq)) + ctf_integer(unsigned int, nr_sector, blk_rq_trace_nr_sectors(rq)) + ctf_integer(unsigned int, bytes, blk_rq_bytes(rq)) + ctf_integer(pid_t, tid, current->pid) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq)) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0) \ + || LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) LTTNG_TRACEPOINT_EVENT_CLASS(block_rq, TP_PROTO(struct request *rq), @@ -637,7 +755,9 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq, ) #endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0) \ + || LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) /** * block_rq_insert - insert block operation request into queue * @rq: block IO operation request @@ -672,7 +792,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_insert, ) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0) \ + || LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) /** * block_rq_issue - issue pending block IO request operation to device driver * @rq: block IO operation operation request @@ -703,7 +825,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_issue, ) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0)) /** * block_rq_merge - merge request with another one in the elevator * @rq: block IO operation operation request @@ -734,7 +857,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_merge, ) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,8,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,8,0) || \ + LTTNG_RHEL_KERNEL_RANGE(4,18,0,305,0,0, 4,19,0,0,0,0)) + /** * block_bio_complete - completed all work on the block operation * @q: queue holding the block operation @@ -1494,7 +1619,37 @@ LTTNG_TRACEPOINT_EVENT(block_bio_remap, ) #endif -#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0) \ + || LTTNG_RHEL_KERNEL_RANGE(5,14,0,162,0,0, 5,15,0,0,0,0)) +/** + * block_rq_remap - map request for a block operation request + * @rq: block IO operation request + * @dev: device for the operation + * @from: original sector for the operation + * + * The block operation request @rq in @q has been remapped. The block + * operation request @rq holds the current information and @from hold + * the original sector. + */ +LTTNG_TRACEPOINT_EVENT(block_rq_remap, + + TP_PROTO(struct request *rq, dev_t dev, sector_t from), + + TP_ARGS(rq, dev, from), + + TP_FIELDS( + ctf_integer(dev_t, dev, disk_devt(rq->q->disk)) + ctf_integer(sector_t, sector, blk_rq_pos(rq)) + ctf_integer(unsigned int, nr_sector, blk_rq_sectors(rq)) + ctf_integer(dev_t, old_dev, dev) + ctf_integer(sector_t, old_sector, from) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_req_op(rq), lttng_req_rw(rq), blk_rq_bytes(rq)) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0) \ + || LTTNG_KERNEL_RANGE(5,10,137, 5,11,0) \ + || LTTNG_RHEL_KERNEL_RANGE(4,18,0,372,0,0, 4,19,0,0,0,0)) /** * block_rq_remap - map request for a block operation request * @rq: block IO operation request