File fix-update-block-instrumentation-to-3.15-kernel.patch of Package lttng-modules.389

From: mathieu desnoyers <mathieu.desnoyers@efficios.com>
Subject: Fix: update block instrumentation to 3.15 kernel
Date: Tue Apr 15 11:13:16 2014 -0400
Git-commit: 1c53e689434a6bdd7dc3f54c07bfb72750d1d24c
Git-repo: git://git.lttng.org/lttng-modules.git
References: none
Signed-off-by: Tony Jones <tonyj@suse.de>

Required for following upstream commit introduced by 3.12.21 stable kernel
update.

	commit af5040da01ef980670b3741b3e10733ee3e33566
	Author: Roman Pen <r.peniaev@gmail.com>
	Date:   Tue Mar 4 23:13:10 2014 +0900

	    blktrace: fix accounting of partially completed requests

---
 instrumentation/events/lttng-module/block.h |   35 +++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

--- a/instrumentation/events/lttng-module/block.h
+++ b/instrumentation/events/lttng-module/block.h
@@ -225,6 +225,7 @@ DEFINE_EVENT(block_rq_with_error, block_
  * 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
@@ -232,11 +233,39 @@ DEFINE_EVENT(block_rq_with_error, block_
  * do for the request. If @rq->bio is non-NULL then there is
  * additional work required to complete the request.
  */
-DEFINE_EVENT(block_rq_with_error, block_rq_complete,
+TRACE_EVENT(block_rq_complete,
 
-	TP_PROTO(struct request_queue *q, struct request *rq),
+	TP_PROTO(struct request_queue *q, struct request *rq,
+		 unsigned int nr_bytes),
 
-	TP_ARGS(q, rq)
+	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)
 )
 
 DECLARE_EVENT_CLASS(block_rq,