From e0ccd78a799f396403582d19daf6a9bdbcbf6e57 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Tue, 20 May 2014 21:04:39 +0200 Subject: [PATCH] - fix build with latest kernels, rel 2 This patches fixes build problem introduced by: [PATCH 3.4 3/9] blktrace: fix accounting of partially completed requests --- block-update-2.patch | 53 ++++++++++++++++++++++++++++ block-update.patch | 84 ++++++++++++++++++++++++++++++++++++++++++++ lttng-modules.spec | 6 +++- 3 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 block-update-2.patch create mode 100644 block-update.patch diff --git a/block-update-2.patch b/block-update-2.patch new file mode 100644 index 0000000..85861dc --- /dev/null +++ b/block-update-2.patch @@ -0,0 +1,53 @@ +From cf0b616277b7be6950243bc6cdad172af073ff0a Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers +Date: Sat, 3 May 2014 15:07:42 -0400 +Subject: [PATCH] Fix: blktrace instrumentation for v3.2.58+ stable branch + +Starting with Linux kernel v3.2.58 within the v3.2 Linux stable branch: + +commit 5b85afa68e4f56c27f1d5c6f49e5257bce6448e6 +Author: Roman Pen +Date: Tue Mar 4 23:13:10 2014 +0900 + + blktrace: fix accounting of partially completed requests + + commit af5040da01ef980670b3741b3e10733ee3e33566 upstream. + +The module API for a block layer tracepoint changes. Fix the associated +build failure. + +Signed-off-by: Mathieu Desnoyers +--- + instrumentation/events/lttng-module/block.h | 3 ++- + probes/lttng-probe-block.c | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/instrumentation/events/lttng-module/block.h b/instrumentation/events/lttng-module/block.h +index 2af4fb3..5ea557d 100644 +--- a/instrumentation/events/lttng-module/block.h ++++ b/instrumentation/events/lttng-module/block.h +@@ -221,7 +221,8 @@ DEFINE_EVENT(block_rq_with_error, block_rq_requeue, + TP_ARGS(q, rq) + ) + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0) \ ++ || LTTNG_KERNEL_RANGE(3,2,58, 3,3,0) || LTTNG_KERNEL_RANGE(3,4,91, 3,5,0)) + + /** + * block_rq_complete - block IO operation completed by device driver +diff --git a/probes/lttng-probe-block.c b/probes/lttng-probe-block.c +index 27f2142..d363d4d 100644 +--- a/probes/lttng-probe-block.c ++++ b/probes/lttng-probe-block.c +@@ -23,6 +23,7 @@ + #include + #include + #include "../lttng-tracer.h" ++#include "../lttng-kernel-version.h" + + /* + * Create the tracepoint static inlines from the kernel to validate that our +-- +1.7.10.4 + diff --git a/block-update.patch b/block-update.patch new file mode 100644 index 0000000..1a8f1f3 --- /dev/null +++ b/block-update.patch @@ -0,0 +1,84 @@ +From 1c53e689434a6bdd7dc3f54c07bfb72750d1d24c Mon Sep 17 00:00:00 2001 +From: Mathieu Desnoyers +Date: Tue, 15 Apr 2014 11:13:16 -0400 +Subject: [PATCH] Fix: update block instrumentation to 3.15 kernel + +Signed-off-by: Mathieu Desnoyers +--- + instrumentation/events/lttng-module/block.h | 53 +++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +diff --git a/instrumentation/events/lttng-module/block.h b/instrumentation/events/lttng-module/block.h +index 8d26797..2af4fb3 100644 +--- a/instrumentation/events/lttng-module/block.h ++++ b/instrumentation/events/lttng-module/block.h +@@ -221,6 +221,57 @@ DEFINE_EVENT(block_rq_with_error, block_rq_requeue, + TP_ARGS(q, rq) + ) + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) ++ ++/** ++ * block_rq_complete - block IO operation completed by device driver ++ * @q: queue containing the block operation request ++ * @rq: block operations request ++ * @nr_bytes: number of completed bytes ++ * ++ * The block_rq_complete tracepoint event indicates that some portion ++ * of operation request has been completed by the device driver. If ++ * the @rq->bio is %NULL, then there is absolutely no additional work to ++ * do for the request. If @rq->bio is non-NULL then there is ++ * additional work required to complete the request. ++ */ ++TRACE_EVENT(block_rq_complete, ++ ++ TP_PROTO(struct request_queue *q, struct request *rq, ++ unsigned int nr_bytes), ++ ++ TP_ARGS(q, rq, nr_bytes), ++ ++ TP_STRUCT__entry( ++ __field( dev_t, dev ) ++ __field( sector_t, sector ) ++ __field( unsigned int, nr_sector ) ++ __field( int, errors ) ++ __field( unsigned int, rwbs ) ++ __dynamic_array_hex( unsigned char, cmd, ++ (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? ++ rq->cmd_len : 0) ++ ), ++ ++ TP_fast_assign( ++ tp_assign(dev, rq->rq_disk ? disk_devt(rq->rq_disk) : 0) ++ tp_assign(sector, blk_rq_pos(rq)) ++ tp_assign(nr_sector, nr_bytes >> 9) ++ tp_assign(errors, rq->errors) ++ blk_fill_rwbs(rwbs, rq->cmd_flags, nr_bytes) ++ tp_memcpy_dyn(cmd, (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? ++ rq->cmd : NULL) ++ ), ++ ++ TP_printk("%d,%d %s (%s) %llu + %u [%d]", ++ MAJOR(__entry->dev), MINOR(__entry->dev), ++ __entry->rwbs, __get_str(cmd), ++ (unsigned long long)__entry->sector, ++ __entry->nr_sector, __entry->errors) ++) ++ ++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */ ++ + /** + * block_rq_complete - block IO operation completed by device driver + * @q: queue containing the block operation request +@@ -239,6 +290,8 @@ DEFINE_EVENT(block_rq_with_error, block_rq_complete, + TP_ARGS(q, rq) + ) + ++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) */ ++ + DECLARE_EVENT_CLASS(block_rq, + + TP_PROTO(struct request_queue *q, struct request *rq), +-- +1.7.10.4 + diff --git a/lttng-modules.spec b/lttng-modules.spec index 4abfcaa..e879ed8 100644 --- a/lttng-modules.spec +++ b/lttng-modules.spec @@ -20,7 +20,7 @@ exit 1 %define kpkg %(echo %{_build_kernels} | tr , '\\n' | while read n ; do echo %%undefine alt_kernel ; [ -z "$n" ] || echo %%define alt_kernel $n ; echo %%kernel_pkg ; done) %define bkpkg %(echo %{_build_kernels} | tr , '\\n' | while read n ; do echo %%undefine alt_kernel ; [ -z "$n" ] || echo %%define alt_kernel $n ; echo %%build_kernel_pkg ; done) -%define rel 1 +%define rel 2 %define pname lttng-modules Summary: LTTng 2.x kernel modules Summary(pl.UTF-8): Moduły jądra LTTng 2.x @@ -31,6 +31,8 @@ License: GPL v2 Group: Base/Kernel Source0: http://lttng.org/files/lttng-modules/%{pname}-%{version}.tar.bz2 # Source0-md5: 5d778f0de7a5d01e544b6f8357046472 +Patch0: block-update.patch +Patch1: block-update-2.patch URL: http://lttng.org/ %if %{with dist_kernel} BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.38 @@ -100,6 +102,8 @@ p=`pwd`\ %prep %setup -q -n %{pname}-%{version} +%patch0 -p1 +%patch1 -p1 %build %{expand:%bkpkg} -- 2.44.0