X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Fblock.h;h=b0fbfd81c9dc4126c0c513f5bc185f90adb5f900;hb=b78104db53f97c10add30016e365855a26f6e01e;hp=80ea25cadd40076ece8484d356eae18703dd95d9;hpb=49447902967115fe5a07ee7a1df3d17fbf4b1ab8;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/block.h b/instrumentation/events/lttng-module/block.h index 80ea25ca..b0fbfd81 100644 --- a/instrumentation/events/lttng-module/block.h +++ b/instrumentation/events/lttng-module/block.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */ #undef TRACE_SYSTEM #define TRACE_SYSTEM block @@ -8,11 +9,11 @@ #include #include #include -#include +#include -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) #include -#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */ +#endif /* (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ #ifndef _TRACE_BLOCK_DEF_ #define _TRACE_BLOCK_DEF_ @@ -33,14 +34,14 @@ enum { #endif /* _TRACE_BLOCK_DEF_ */ - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) -#define lttng_bio_dev(bio) bio_dev(bio) -#else -#define lttng_bio_dev(bio) ((bio)->bi_bdev ? (bio)->bi_bdev->bd_dev : 0) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,8,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,73,6,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,82,6,0,0, 4,4,82,7,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,92,6,0,0, 4,4,92,7,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,103,6,0,0, 4,4,103,7,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,114,94,0,0, 4,4,114,95,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,120,94,0,0, 4,4,120,95,0,0) || \ + LTTNG_SLE_KERNEL_RANGE(4,4,126,94,0,0, 4,5,0,0,0,0)) #define lttng_req_op(rq) req_op(rq) #define lttng_req_rw(rq) ((rq)->cmd_flags) @@ -61,7 +62,7 @@ enum { | ((rw) & REQ_PREFLUSH ? RWBS_FLAG_PREFLUSH : 0) \ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,1,0)) #define lttng_req_op(rq) #define lttng_req_rw(rq) ((rq)->cmd_flags) @@ -80,7 +81,7 @@ enum { | ((rw) & REQ_FLUSH ? RWBS_FLAG_FLUSH : 0) \ | ((rw) & REQ_FUA ? RWBS_FLAG_FUA : 0)) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,37)) #define lttng_req_op(rq) #define lttng_req_rw(rq) ((rq)->cmd_flags) @@ -97,7 +98,7 @@ enum { | ((rw) & REQ_META ? RWBS_FLAG_META : 0) \ | ((rw) & REQ_SECURE ? RWBS_FLAG_SECURE : 0)) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,36)) #define lttng_req_op(rq) #define lttng_req_rw(rq) ((rq)->cmd_flags) @@ -134,7 +135,7 @@ enum { #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) LTTNG_TRACEPOINT_EVENT_CLASS(block_buffer, TP_PROTO(struct buffer_head *bh), @@ -175,9 +176,9 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_buffer, block_dirty_buffer, ) #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,12,0)) /* block_rq_with_error event class removed in kernel 4.12 */ -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq_with_error, TP_PROTO(struct request_queue *q, struct request *rq), @@ -220,7 +221,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq_with_error, TP_code_post() ) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */ +#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq_with_error, TP_PROTO(struct request_queue *q, struct request *rq), @@ -263,9 +264,9 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq_with_error, TP_code_post() ) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)) +#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(4,12,0)) /** * block_rq_abort - abort block operation request * @q: queue containing the block operation request @@ -284,6 +285,31 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_abort, ) #endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,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->rq_disk ? disk_devt(rq->rq_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(4,12,0)) /** * block_rq_requeue - place block IO request back on a queue * @q: queue holding operation @@ -293,7 +319,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_abort, * @q. For some reason the request was not completed and needs to be * put back in the queue. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) LTTNG_TRACEPOINT_EVENT(block_rq_requeue, TP_PROTO(struct request_queue *q, struct request *rq), @@ -330,7 +355,7 @@ 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) +#if (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), @@ -347,7 +372,7 @@ LTTNG_TRACEPOINT_EVENT(block_rq_complete, lttng_req_op(rq), lttng_req_rw(rq), nr_bytes) ) ) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) LTTNG_TRACEPOINT_EVENT_CODE(block_rq_complete, TP_PROTO(struct request_queue *q, struct request *rq, @@ -385,7 +410,7 @@ LTTNG_TRACEPOINT_EVENT_CODE(block_rq_complete, TP_code_post() ) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,5) \ +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,5) \ || LTTNG_KERNEL_RANGE(3,12,21, 3,13,0) \ || LTTNG_KERNEL_RANGE(3,10,41, 3,11,0) \ || LTTNG_KERNEL_RANGE(3,4,91, 3,5,0) \ @@ -430,7 +455,7 @@ LTTNG_TRACEPOINT_EVENT_CODE(block_rq_complete, TP_code_post() ) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */ +#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */ /** * block_rq_complete - block IO operation completed by device driver @@ -450,9 +475,28 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_complete, TP_ARGS(q, rq) ) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,15,0)) */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(block_rq, + + TP_PROTO(struct request *rq), + + TP_ARGS(rq), + + TP_FIELDS( + ctf_integer(dev_t, dev, + rq->rq_disk ? disk_devt(rq->rq_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(4,12,0)) LTTNG_TRACEPOINT_EVENT_CLASS(block_rq, TP_PROTO(struct request_queue *q, struct request *rq), @@ -471,7 +515,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_rq, ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) ) ) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq, TP_PROTO(struct request_queue *q, struct request *rq), @@ -519,7 +563,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq, TP_code_post() ) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */ +#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq, TP_PROTO(struct request_queue *q, struct request *rq), @@ -566,8 +610,25 @@ LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq, TP_code_post() ) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0)) */ +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_rq_insert - insert block operation request into queue + * @rq: block IO operation request + * + * Called immediately before block operation request @rq is inserted + * into queue @q. The fields in the operation request @rq struct can + * be examined to determine which device and sectors the pending + * operation would access. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_insert, + + TP_PROTO(struct request *rq), + + TP_ARGS(rq) +) +#else /** * block_rq_insert - insert block operation request into queue * @q: target queue @@ -584,7 +645,23 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_insert, TP_ARGS(q, rq) ) +#endif + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_rq_issue - issue pending block IO request operation to device driver + * @rq: block IO operation operation request + * + * Called when block operation request @rq from queue @q is sent to a + * device driver for processing. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_issue, + TP_PROTO(struct request *rq), + + TP_ARGS(rq) +) +#else /** * block_rq_issue - issue pending block IO request operation to device driver * @q: queue holding operation @@ -599,44 +676,92 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_issue, TP_ARGS(q, rq) ) +#endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) /** - * block_bio_bounce - used bounce buffer when processing block operation + * block_rq_merge - merge request with another one in the elevator + * @rq: block IO operation operation request + * + * Called when block operation request @rq from queue @q is merged to another + * request queued in the elevator. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_merge, + + TP_PROTO(struct request *rq), + + TP_ARGS(rq) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,9,0)) +/** + * block_rq_merge - merge request with another one in the elevator + * @q: queue holding operation + * @rq: block IO operation operation request + * + * Called when block operation request @rq from queue @q is merged to another + * request queued in the elevator. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq, block_rq_merge, + + TP_PROTO(struct request_queue *q, struct request *rq), + + TP_ARGS(q, rq) +) +#endif + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,8,0)) +/** + * block_bio_complete - completed all work on the block operation * @q: queue holding the block operation - * @bio: block operation + * @bio: block operation completed + * @error: io error value * - * A bounce buffer was used to handle the block operation @bio in @q. - * This occurs when hardware limitations prevent a direct transfer of - * data between the @bio data memory area and the IO device. Use of a - * bounce buffer requires extra copying of data and decreases - * performance. + * This tracepoint indicates there is no further work to do on this + * block IO operation @bio. */ -LTTNG_TRACEPOINT_EVENT(block_bio_bounce, +LTTNG_TRACEPOINT_EVENT(block_bio_complete, TP_PROTO(struct request_queue *q, struct bio *bio), TP_ARGS(q, bio), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + ctf_integer(dev_t, dev, bio_dev(bio)) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + ctf_integer(int, error, blk_status_to_errno(bio->bi_status)) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ - ctf_integer(sector_t, sector, bio->bi_sector) - ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) +/** + * block_bio_complete - completed all work on the block operation + * @q: queue holding the block operation + * @bio: block operation completed + * @error: io error value + * + * This tracepoint indicates there is no further work to do on this + * block IO operation @bio. + */ +LTTNG_TRACEPOINT_EVENT(block_bio_complete, + + TP_PROTO(struct request_queue *q, struct bio *bio, int error), + + TP_ARGS(q, bio, error), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + ctf_integer(int, error, error) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), - bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ - ctf_integer(pid_t, tid, current->pid) - ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + bio->bi_iter.bi_size) ) ) - +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) /** * block_bio_complete - completed all work on the block operation * @q: queue holding the block operation @@ -648,40 +773,109 @@ LTTNG_TRACEPOINT_EVENT(block_bio_bounce, */ LTTNG_TRACEPOINT_EVENT(block_bio_complete, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) TP_PROTO(struct request_queue *q, struct bio *bio, int error), TP_ARGS(q, bio, error), -#else - TP_PROTO(struct request_queue *q, struct bio *bio), - - TP_ARGS(q, bio), -#endif TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) ctf_integer(int, error, error) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,38)) +/** + * block_bio_complete - completed all work on the block operation + * @q: queue holding the block operation + * @bio: block operation completed + * @error: io error value + * + * This tracepoint indicates there is no further work to do on this + * block IO operation @bio. + */ +LTTNG_TRACEPOINT_EVENT(block_bio_complete, + + TP_PROTO(struct request_queue *q, struct bio *bio, int error), + + TP_ARGS(q, bio, error), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_sector) ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) ctf_integer(int, error, error) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) + ) +) #else +/** + * block_bio_complete - completed all work on the block operation + * @q: queue holding the block operation + * @bio: block operation completed + * @error: io error value + * + * This tracepoint indicates there is no further work to do on this + * block IO operation @bio. + */ +LTTNG_TRACEPOINT_EVENT(block_bio_complete, + + TP_PROTO(struct request_queue *q, struct bio *bio), + + TP_ARGS(q, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) + ctf_integer(sector_t, sector, bio->bi_sector) + ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) ctf_integer(int, error, 0) -#endif blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ ) ) +#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(block_bio, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge, + + TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio), + + TP_ARGS(q, rq, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge, TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio), @@ -689,27 +883,166 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge, TP_ARGS(q, rq, bio), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) +LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge, + + TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio), + + TP_ARGS(q, rq, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_sector) ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ ctf_integer(pid_t, tid, current->pid) ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) ) ) +#endif + + + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_bio_bounce - used bounce buffer when processing block operation + * @bio: block operation + * + * A bounce buffer was used to handle the block operation @bio in @q. + * This occurs when hardware limitations prevent a direct transfer of + * data between the @bio data memory area and the IO device. Use of a + * bounce buffer requires extra copying of data and decreases + * performance. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_bio_bounce, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) +/** + * block_bio_bounce - used bounce buffer when processing block operation + * @q: queue holding the block operation + * @bio: block operation + * + * A bounce buffer was used to handle the block operation @bio in @q. + * This occurs when hardware limitations prevent a direct transfer of + * data between the @bio data memory area and the IO device. Use of a + * bounce buffer requires extra copying of data and decreases + * performance. + */ +LTTNG_TRACEPOINT_EVENT(block_bio_bounce, + + TP_PROTO(struct request_queue *q, struct bio *bio), + + TP_ARGS(q, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) +LTTNG_TRACEPOINT_EVENT(block_bio_bounce, + + TP_PROTO(struct request_queue *q, struct bio *bio), + + TP_ARGS(q, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#else +LTTNG_TRACEPOINT_EVENT(block_bio_bounce, + + TP_PROTO(struct request_queue *q, struct bio *bio), + + TP_ARGS(q, bio), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0) + ctf_integer(sector_t, sector, bio->bi_sector) + ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_size) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#endif + +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_bio_backmerge - merging block operation to the end of an existing operation + * @bio: new block operation to merge + * + * Merging block request @bio to the end of an existing block request. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_bio_backmerge, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio) +) + +/** + * block_bio_frontmerge - merging block operation to the beginning of an existing operation + * @bio: new block operation to merge + * + * Merging block IO operation @bio to the beginning of an existing block request. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_bio_frontmerge, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio) +) + +/** + * block_bio_queue - putting new block IO operation in queue + * @bio: new block operation + * + * About to place the block IO operation @bio into queue @q. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_bio_queue, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) /** * block_bio_backmerge - merging block operation to the end of an existing operation * @q: queue holding operation + * @rq: request bio is being merged into * @bio: new block operation to merge * * Merging block request @bio to the end of an existing block request @@ -725,6 +1058,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio_merge, block_bio_backmerge, /** * block_bio_frontmerge - merging block operation to the beginning of an existing operation * @q: queue holding operation + * @rq: request bio is being merged into * @bio: new block operation to merge * * Merging block IO operation @bio to the beginning of an existing block @@ -751,24 +1085,28 @@ LTTNG_TRACEPOINT_EVENT(block_bio_queue, TP_ARGS(q, bio), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) + ctf_integer(dev_t, dev, bio_dev(bio)) +#else + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) +#endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ +#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) */ ctf_integer(sector_t, sector, bio->bi_sector) ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) */ ctf_integer(pid_t, tid, current->pid) ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) ) ) -#else /* if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) */ +#else /* if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) */ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio, TP_PROTO(struct request_queue *q, struct bio *bio), @@ -776,7 +1114,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio, TP_ARGS(q, bio), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) + ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0) ctf_integer(sector_t, sector, bio->bi_sector) ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) blk_rwbs_ctf_integer(unsigned int, rwbs, @@ -829,8 +1167,22 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_bio_queue, TP_ARGS(q, bio) ) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,9,0)) */ +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_getrq - get a free request entry in queue for block IO operations + * @bio: pending block IO operation (can be %NULL) + * + * A request struct has been allocated to handle the block IO operation @bio. + */ +LTTNG_TRACEPOINT_EVENT_INSTANCE(block_bio, block_getrq, + + TP_PROTO(struct bio *bio), + + TP_ARGS(bio) +) +#else LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq, TP_PROTO(struct request_queue *q, struct bio *bio, int rw), @@ -838,8 +1190,12 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq, TP_ARGS(q, bio, rw), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) + ctf_integer(dev_t, dev, bio ? bio_dev(bio) : 0) +#else + ctf_integer(dev_t, dev, bio ? bio->bi_bdev->bd_dev : 0) +#endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) ctf_integer(sector_t, sector, bio ? bio->bi_iter.bi_sector : 0) ctf_integer(unsigned int, nr_sector, bio ? bio_sectors(bio) : 0) @@ -847,7 +1203,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq, bio ? lttng_bio_op(bio) : 0, bio ? lttng_bio_rw(bio) : 0, bio ? bio->bi_iter.bi_size : 0) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ +#else /* #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) */ ctf_integer(sector_t, sector, bio ? bio->bi_sector : 0) ctf_integer(unsigned int, nr_sector, bio ? bio->bi_size >> 9 : 0) @@ -855,7 +1211,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq, bio ? lttng_bio_op(bio) : 0, bio ? lttng_bio_rw(bio) : 0, bio ? bio->bi_size : 0) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ +#endif /* #else #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) */ ctf_integer(pid_t, tid, current->pid) ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) ) @@ -864,7 +1220,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq, /** * block_getrq - get a free request entry in queue for block IO operations * @q: queue for operations - * @bio: pending block IO operation + * @bio: pending block IO operation (can be %NULL) * @rw: low bit indicates a read (%0) or a write (%1) * * A request struct for queue @q has been allocated to handle the @@ -880,7 +1236,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_get_rq, block_getrq, /** * block_sleeprq - waiting to get a free request entry in queue for block IO operation * @q: queue for operation - * @bio: pending block IO operation + * @bio: pending block IO operation (can be %NULL) * @rw: low bit indicates a read (%0) or a write (%1) * * In the case where a request struct cannot be provided for queue @q @@ -894,6 +1250,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_get_rq, block_sleeprq, TP_ARGS(q, bio, rw) ) +#endif /** * block_plug - keep operations requests in request queue @@ -917,7 +1274,7 @@ LTTNG_TRACEPOINT_EVENT(block_plug, LTTNG_TRACEPOINT_EVENT_CLASS(block_unplug, -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,39)) TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit), TP_ARGS(q, depth, explicit), @@ -928,7 +1285,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_unplug, #endif TP_FIELDS( -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,39)) ctf_integer(int, nr_rq, depth) #else ctf_integer(int, nr_rq, q->rq.count[READ] + q->rq.count[WRITE]) @@ -938,7 +1295,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_unplug, ) ) -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)) +#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(2,6,39)) /** * block_unplug_timer - timed release of operations requests in queue to device driver * @q: request queue to unplug @@ -963,13 +1320,13 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_unplug, block_unplug_timer, * Unplug request queue @q because device driver is scheduled to work * on elements in the request queue. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,39)) LTTNG_TRACEPOINT_EVENT_INSTANCE(block_unplug, block_unplug, #else LTTNG_TRACEPOINT_EVENT_INSTANCE(block_unplug, block_unplug_io, #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,39)) TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit), TP_ARGS(q, depth, explicit) @@ -980,6 +1337,36 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(block_unplug, block_unplug_io, #endif ) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_split - split a single bio struct into two bio structs + * @bio: block operation being split + * @new_sector: The starting sector for the new bio + * + * The bio request @bio needs to be split into two bio requests. The newly + * created @bio request starts at @new_sector. This split may be required due to + * hardware limitations such as operation crossing device boundaries in a RAID + * system. + */ +LTTNG_TRACEPOINT_EVENT(block_split, + + TP_PROTO(struct bio *bio, unsigned int new_sector), + + TP_ARGS(bio, new_sector), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(sector_t, new_sector, new_sector) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) + +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) /** * block_split - split a single bio struct into two bio structs * @q: queue containing the bio @@ -999,23 +1386,83 @@ LTTNG_TRACEPOINT_EVENT(block_split, TP_ARGS(q, bio, new_sector), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(sector_t, new_sector, new_sector) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) +LTTNG_TRACEPOINT_EVENT(block_split, + + TP_PROTO(struct request_queue *q, struct bio *bio, + unsigned int new_sector), + + TP_ARGS(q, bio, new_sector), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ + ctf_integer(sector_t, new_sector, new_sector) + ctf_integer(pid_t, tid, current->pid) + ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) + ) +) +#else +LTTNG_TRACEPOINT_EVENT(block_split, + + TP_PROTO(struct request_queue *q, struct bio *bio, + unsigned int new_sector), + + TP_ARGS(q, bio, new_sector), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_sector) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ ctf_integer(sector_t, new_sector, new_sector) ctf_integer(pid_t, tid, current->pid) ctf_array_text(char, comm, current->comm, TASK_COMM_LEN) ) ) +#endif +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) +/** + * block_bio_remap - map request for a logical device to the raw device + * @bio: revised operation + * @dev: original device for the operation + * @from: original sector for the operation + * + * An operation for a logical device has been mapped to the + * raw block device. + */ +LTTNG_TRACEPOINT_EVENT(block_bio_remap, + + TP_PROTO(struct bio *bio, dev_t dev, sector_t from), + + TP_ARGS(bio, dev, from), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio_dev(bio)) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(dev_t, old_dev, dev) + ctf_integer(sector_t, old_sector, from) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,14,0)) /** * block_bio_remap - map request for a logical device to the raw device * @q: queue holding the operation @@ -1026,7 +1473,7 @@ LTTNG_TRACEPOINT_EVENT(block_split, * An operation for a logical device has been mapped to the * raw block device. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(2,6,38)) LTTNG_TRACEPOINT_EVENT(block_bio_remap, #else LTTNG_TRACEPOINT_EVENT(block_remap, @@ -1038,25 +1485,83 @@ LTTNG_TRACEPOINT_EVENT(block_remap, TP_ARGS(q, bio, dev, from), TP_FIELDS( - ctf_integer(dev_t, dev, lttng_bio_dev(bio)) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + ctf_integer(dev_t, dev, bio_dev(bio)) ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_iter.bi_size) -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ + ctf_integer(dev_t, old_dev, dev) + ctf_integer(sector_t, old_sector, from) + ) +) +#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,14,0)) +LTTNG_TRACEPOINT_EVENT(block_bio_remap, + + TP_PROTO(struct request_queue *q, struct bio *bio, dev_t dev, + sector_t from), + + TP_ARGS(q, bio, dev, from), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) + ctf_integer(sector_t, sector, bio->bi_iter.bi_sector) + ctf_integer(unsigned int, nr_sector, bio_sectors(bio)) + blk_rwbs_ctf_integer(unsigned int, rwbs, + lttng_bio_op(bio), lttng_bio_rw(bio), + bio->bi_iter.bi_size) + ctf_integer(dev_t, old_dev, dev) + ctf_integer(sector_t, old_sector, from) + ) +) +#else +LTTNG_TRACEPOINT_EVENT(block_bio_remap, + + TP_PROTO(struct request_queue *q, struct bio *bio, dev_t dev, + sector_t from), + + TP_ARGS(q, bio, dev, from), + + TP_FIELDS( + ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev) ctf_integer(sector_t, sector, bio->bi_sector) ctf_integer(unsigned int, nr_sector, bio->bi_size >> 9) blk_rwbs_ctf_integer(unsigned int, rwbs, lttng_bio_op(bio), lttng_bio_rw(bio), bio->bi_size) -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */ ctf_integer(dev_t, old_dev, dev) ctf_integer(sector_t, old_sector, from) ) ) +#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,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->rq_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(2,6,32)) /** * block_rq_remap - map request for a block operation request * @q: queue holding the operation