From: Jens Axboe <axboe@kernel.dk>
To: Jeff Moyer <jmoyer@redhat.com>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
Li Zefan <lizf@cn.fujitsu.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] blktrace: add missing probe argument to block_bio_complete
Date: Fri, 07 Jan 2011 16:18:18 +0100 [thread overview]
Message-ID: <4D272EBA.5000703@kernel.dk> (raw)
In-Reply-To: <x498vyw7qe7.fsf@segfault.boston.devel.redhat.com>
On 2011-01-07 15:13, Jeff Moyer wrote:
> Mathieu Desnoyers <mathieu.desnoyers@efficios.com> writes:
>
>> blktrace.c block bio complete callback needs to gain a new argument to reflect
>> the newly added "error" tracepoint argument. This is needed to match the new
>> block_bio_complete TRACE_EVENT as of
>> commit de983a7bfcb7c020901ca6e2314cf55a4207ab5a.
>>
>> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
>> CC: Jeff Moyer <jmoyer@redhat.com>
>> CC: Steven Rostedt <rostedt@goodmis.org>
>> CC: Frederic Weisbecker <fweisbec@gmail.com>
>> CC: Ingo Molnar <mingo@elte.hu>
>> CC: Thomas Gleixner <tglx@linutronix.de>
>> CC: Jens Axboe <axboe@kernel.dk>
>> CC: Li Zefan <lizf@cn.fujitsu.com>
>> ---
>> kernel/trace/blktrace.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> Index: linux-2.6-lttng/kernel/trace/blktrace.c
>> ===================================================================
>> --- linux-2.6-lttng.orig/kernel/trace/blktrace.c
>> +++ linux-2.6-lttng/kernel/trace/blktrace.c
>> @@ -785,7 +785,8 @@ static void blk_add_trace_bio_bounce(voi
>> }
>>
>> static void blk_add_trace_bio_complete(void *ignore,
>> - struct request_queue *q, struct bio *bio)
>> + struct request_queue *q, struct bio *bio,
>> + int error)
>> {
>> blk_add_trace_bio(q, bio, BLK_TA_COMPLETE);
>> }
>
> OK, I clearly didn't look closely enough last time. There's no sense
> passing this information down if it isn't used (as you said initially).
> blk_add_trace_bio sets the error based on whether or not the
> BIO_UPTODATE bit is set. So, I think we should instead revert the patch
> I sent you (Mathieu), and then completely get rid of the error field in
> the TP macros.
>
> Does that make sense to everyone else?
We usually use BIO_UPTODATE if we have no other information available.
So if we have, then we should use it.
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index fab31af..153562d 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -758,54 +758,58 @@ static void blk_add_trace_rq_complete(void *ignore,
* @q: queue the io is for
* @bio: the source bio
* @what: the action
+ * @error: error, if any
*
* Description:
* Records an action against a bio. Will log the bio offset + size.
*
**/
static void blk_add_trace_bio(struct request_queue *q, struct bio *bio,
- u32 what)
+ u32 what, int error)
{
struct blk_trace *bt = q->blk_trace;
if (likely(!bt))
return;
+ if (!error && !bio_flagged(bio, BIO_UPTODATE))
+ error = EIO;
+
__blk_add_trace(bt, bio->bi_sector, bio->bi_size, bio->bi_rw, what,
- !bio_flagged(bio, BIO_UPTODATE), 0, NULL);
+ error, 0, NULL);
}
static void blk_add_trace_bio_bounce(void *ignore,
struct request_queue *q, struct bio *bio)
{
- blk_add_trace_bio(q, bio, BLK_TA_BOUNCE);
+ blk_add_trace_bio(q, bio, BLK_TA_BOUNCE, 0);
}
static void blk_add_trace_bio_complete(void *ignore,
struct request_queue *q, struct bio *bio,
int error)
{
- blk_add_trace_bio(q, bio, BLK_TA_COMPLETE);
+ blk_add_trace_bio(q, bio, BLK_TA_COMPLETE, error);
}
static void blk_add_trace_bio_backmerge(void *ignore,
struct request_queue *q,
struct bio *bio)
{
- blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE);
+ blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE, 0);
}
static void blk_add_trace_bio_frontmerge(void *ignore,
struct request_queue *q,
struct bio *bio)
{
- blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE);
+ blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE, 0);
}
static void blk_add_trace_bio_queue(void *ignore,
struct request_queue *q, struct bio *bio)
{
- blk_add_trace_bio(q, bio, BLK_TA_QUEUE);
+ blk_add_trace_bio(q, bio, BLK_TA_QUEUE, 0);
}
static void blk_add_trace_getrq(void *ignore,
@@ -813,7 +817,7 @@ static void blk_add_trace_getrq(void *ignore,
struct bio *bio, int rw)
{
if (bio)
- blk_add_trace_bio(q, bio, BLK_TA_GETRQ);
+ blk_add_trace_bio(q, bio, BLK_TA_GETRQ, 0);
else {
struct blk_trace *bt = q->blk_trace;
@@ -828,7 +832,7 @@ static void blk_add_trace_sleeprq(void *ignore,
struct bio *bio, int rw)
{
if (bio)
- blk_add_trace_bio(q, bio, BLK_TA_SLEEPRQ);
+ blk_add_trace_bio(q, bio, BLK_TA_SLEEPRQ, 0);
else {
struct blk_trace *bt = q->blk_trace;
--
Jens Axboe
next prev parent reply other threads:[~2011-01-07 15:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-07 1:54 [PATCH] blktrace: add missing probe argument to block_bio_complete Mathieu Desnoyers
2011-01-07 14:13 ` Jeff Moyer
2011-01-07 15:18 ` Jens Axboe [this message]
2011-01-07 15:27 ` Jeff Moyer
2011-01-07 17:41 ` Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D272EBA.5000703@kernel.dk \
--to=axboe@kernel.dk \
--cc=fweisbec@gmail.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.