#endif /* _TRACE_BLOCK_DEF_ */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0) || \
+ LTTNG_SLE_KERNEL_RANGE(4,4,73,5,0,0, 4,4,103,92,0,0))
#define lttng_req_op(rq) req_op(rq)
#define lttng_req_rw(rq) ((rq)->cmd_flags)
)
#endif
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
+#if (LINUX_VERSION_CODE >= 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))
LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq_with_error,
TP_PROTO(struct request_queue *q, struct request *rq),
)
#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)) */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0))
/**
* block_rq_abort - abort block operation request
* @q: queue containing the block operation request
TP_ARGS(q, rq)
)
+#endif
/**
* block_rq_requeue - place block IO request back on a queue
* @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),
+
+ TP_ARGS(q, 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))
+ )
+)
+#else
LTTNG_TRACEPOINT_EVENT_INSTANCE(block_rq_with_error, block_rq_requeue,
TP_PROTO(struct request_queue *q, struct request *rq),
TP_ARGS(q, rq)
)
+#endif
/**
* block_rq_complete - block IO operation completed by device driver
* 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,11,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
+LTTNG_TRACEPOINT_EVENT(block_rq_complete,
+
+ TP_PROTO(struct request *rq, int 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, error)
+ blk_rwbs_ctf_integer(unsigned int, rwbs,
+ lttng_req_op(rq), lttng_req_rw(rq), nr_bytes)
+ )
+)
+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
LTTNG_TRACEPOINT_EVENT_CODE(block_rq_complete,
TP_PROTO(struct request_queue *q, struct request *rq,
#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
+LTTNG_TRACEPOINT_EVENT_CLASS(block_rq,
+
+ TP_PROTO(struct request_queue *q, struct request *rq),
+
+ TP_ARGS(q, 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0))
LTTNG_TRACEPOINT_EVENT_CLASS_CODE(block_rq,
TP_PROTO(struct request_queue *q, struct request *rq),
TP_ARGS(q, bio),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+ ctf_integer(dev_t, dev, bio_dev(bio))
+#else
ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0)
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
#endif
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
TP_ARGS(q, rq, bio),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
TP_ARGS(q, bio),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
ctf_integer(unsigned int, nr_sector, bio_sectors(bio))
TP_ARGS(q, bio, rw),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio ? bio->bi_iter.bi_sector : 0)
ctf_integer(unsigned int, nr_sector,
/**
* 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
/**
* 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
TP_ARGS(q, bio, new_sector),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
blk_rwbs_ctf_integer(unsigned int, rwbs,
TP_ARGS(q, bio, dev, from),
TP_FIELDS(
+#if (LINUX_VERSION_CODE >= 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 (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
ctf_integer(sector_t, sector, bio->bi_iter.bi_sector)
ctf_integer(unsigned int, nr_sector, bio_sectors(bio))