From d3d9d2a5ea9770db07aeb13a07f999aa48e8f865 Mon Sep 17 00:00:00 2001
From: Jens Axboe <jens.axboe@oracle.com>
Date: Mon, 4 Dec 2006 09:27:41 +0100
Subject: [PATCH 1/2] [PATCH] blktrace: uninline trace_note()

It's too large to inline. Additionally clean it up, by fast pathing
the likely path.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
---
 block/blktrace.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/block/blktrace.c b/block/blktrace.c
index 562ca7cbf858b..17bbdb811aa75 100644
--- a/block/blktrace.c
+++ b/block/blktrace.c
@@ -31,25 +31,25 @@ static unsigned int blktrace_seq __read_mostly = 1;
 /*
  * Send out a notify message.
  */
-static inline unsigned int trace_note(struct blk_trace *bt,
-		pid_t pid, int action,
-		const void *data, size_t len)
+static unsigned int trace_note(struct blk_trace *bt, pid_t pid, int action,
+			       const void *data, size_t len)
 {
 	struct blk_io_trace *t;
-	int cpu = smp_processor_id();
 
 	t = relay_reserve(bt->rchan, sizeof(*t) + len);
-	if (t == NULL)
-		return 0;
-
-	t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
-	t->time = sched_clock() - per_cpu(blk_trace_cpu_offset, cpu);
-	t->device = bt->dev;
-	t->action = action;
-	t->pid = pid;
-	t->cpu = cpu;
-	t->pdu_len = len;
-	memcpy((void *) t + sizeof(*t), data, len);
+	if (t) {
+		const int cpu = smp_processor_id();
+
+		t->magic = BLK_IO_TRACE_MAGIC | BLK_IO_TRACE_VERSION;
+		t->time = sched_clock() - per_cpu(blk_trace_cpu_offset, cpu);
+		t->device = bt->dev;
+		t->action = action;
+		t->pid = pid;
+		t->cpu = cpu;
+		t->pdu_len = len;
+		memcpy((void *) t + sizeof(*t), data, len);
+	}
+
 	return blktrace_seq;
 }
 

From a863055b1066be1b8e1107f71be01daeed6bde31 Mon Sep 17 00:00:00 2001
From: Jens Axboe <jens.axboe@oracle.com>
Date: Mon, 4 Dec 2006 09:30:58 +0100
Subject: [PATCH 2/2] [PATCH] blktrace: don't return blktrace_seq from
 trace_note()

Only the process notifier needs it, and it can set it manually.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
---
 block/blktrace.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/block/blktrace.c b/block/blktrace.c
index 17bbdb811aa75..74e02c04b2dab 100644
--- a/block/blktrace.c
+++ b/block/blktrace.c
@@ -31,8 +31,8 @@ static unsigned int blktrace_seq __read_mostly = 1;
 /*
  * Send out a notify message.
  */
-static unsigned int trace_note(struct blk_trace *bt, pid_t pid, int action,
-			       const void *data, size_t len)
+static void trace_note(struct blk_trace *bt, pid_t pid, int action,
+		       const void *data, size_t len)
 {
 	struct blk_io_trace *t;
 
@@ -49,8 +49,6 @@ static unsigned int trace_note(struct blk_trace *bt, pid_t pid, int action,
 		t->pdu_len = len;
 		memcpy((void *) t + sizeof(*t), data, len);
 	}
-
-	return blktrace_seq;
 }
 
 /*
@@ -59,9 +57,8 @@ static unsigned int trace_note(struct blk_trace *bt, pid_t pid, int action,
  */
 static void trace_note_tsk(struct blk_trace *bt, struct task_struct *tsk)
 {
-	tsk->btrace_seq = trace_note(bt, tsk->pid,
-			BLK_TN_PROCESS,
-			tsk->comm, sizeof(tsk->comm));
+	tsk->btrace_seq = blktrace_seq;
+	trace_note(bt, tsk->pid, BLK_TN_PROCESS, tsk->comm, sizeof(tsk->comm));
 }
 
 static void trace_note_time(struct blk_trace *bt)