[lttng-dev] [PATCH lttng-modules 1/3] Fix: update block instrumentation for kernel 4.14

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Fri Sep 29 20:20:30 UTC 2017


All 3 patches merged into master, 2.10, 2.9, thanks!

Mathieu

----- On Sep 20, 2017, at 12:12 PM, Michael Jeanson mjeanson at efficios.com wrote:

> See upstream commit:
> 
>  commit 74d46992e0d9dee7f1f376de0d56d31614c8a17a
>  Author: Christoph Hellwig <hch at lst.de>
>  Date:   Wed Aug 23 19:10:32 2017 +0200
> 
>    block: replace bi_bdev with a gendisk pointer and partitions index
> 
>    This way we don't need a block_device structure to submit I/O.  The
>    block_device has different life time rules from the gendisk and
>    request_queue and is usually only available when the block device node
>    is open.  Other callers need to explicitly create one (e.g. the lightnvm
>    passthrough code, or the new nvme multipathing code).
> 
>    For the actual I/O path all that we need is the gendisk, which exists
>    once per block device.  But given that the block layer also does
>    partition remapping we additionally need a partition index, which is
>    used for said remapping in generic_make_request.
> 
>    Note that all the block drivers generally want request_queue or
>    sometimes the gendisk, so this removes a layer of indirection all
>    over the stack.
> 
> Signed-off-by: Michael Jeanson <mjeanson at efficios.com>
> ---
> instrumentation/events/lttng-module/block.h | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
> 
> diff --git a/instrumentation/events/lttng-module/block.h
> b/instrumentation/events/lttng-module/block.h
> index c43d747..80ea25c 100644
> --- a/instrumentation/events/lttng-module/block.h
> +++ b/instrumentation/events/lttng-module/block.h
> @@ -33,6 +33,13 @@ 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))
> 
> #define lttng_req_op(rq)	req_op(rq)
> @@ -611,7 +618,7 @@ LTTNG_TRACEPOINT_EVENT(block_bio_bounce,
> 	TP_ARGS(q, bio),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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))
> @@ -652,7 +659,7 @@ LTTNG_TRACEPOINT_EVENT(block_bio_complete,
> #endif
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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))
> @@ -682,7 +689,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio_merge,
> 	TP_ARGS(q, rq, bio),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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))
> @@ -744,7 +751,7 @@ LTTNG_TRACEPOINT_EVENT(block_bio_queue,
> 	TP_ARGS(q, bio),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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))
> @@ -769,7 +776,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_bio,
> 	TP_ARGS(q, bio),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev ? bio->bi_bdev->bd_dev : 0)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> 		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,
> @@ -831,7 +838,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(block_get_rq,
> 	TP_ARGS(q, bio, rw),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio ? bio->bi_bdev->bd_dev : 0)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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,
> @@ -992,7 +999,7 @@ LTTNG_TRACEPOINT_EVENT(block_split,
> 	TP_ARGS(q, bio, new_sector),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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,
> @@ -1031,7 +1038,7 @@ LTTNG_TRACEPOINT_EVENT(block_remap,
> 	TP_ARGS(q, bio, dev, from),
> 
> 	TP_FIELDS(
> -		ctf_integer(dev_t, dev, bio->bi_bdev->bd_dev)
> +		ctf_integer(dev_t, dev, lttng_bio_dev(bio))
> #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))
> --
> 2.7.4

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list