Re: [PATCH 03/11] block: block_bio_complete tracepoint was missing

From: Namhyung Kim
Date: Sun Jan 08 2012 - 21:33:51 EST


Hi,

2012-01-09 10:49 AM, Tejun Heo wrote:
Hello,

On Mon, Jan 09, 2012 at 10:30:06AM +0900, Namhyung Kim wrote:
Just adding the TP unconditionally will produce duplicated (in some
sense) reports about the completion. For example, normal request
based IO reports whole request completion prior to its bio's, and
further

Request and bio completions are separate events. There's nothing
wrong with reporting them separately. In fact, I think they should be
reported separately.

, some of nested block IO handling routines - bounced bio and
btrfs with compression, etc - call bio_endio() more than once. Also
there are cases that bio fails before it's enqueued for some reason.

They are actually separate bio's being completed. I don't think
trying to put extra semantics on TP itself is a good idea. In
general, TP signals that such event happened with sufficient
information and it's the consumers' responsibility to make sense of
what's going on. BIO_CLONED/BOUNCED are there.

I see.


I have no idea about the ioblame can deal with all of such corner
cases. However it might confuse blktrace somewhat, I guess.

Unless someone is doing memcpy() on bio's, ioblame should be okay. It
only considers bio's which went through actual submission.

I already posted similar patch a couple of weeks ago, but didn't
receive a comment yet. [1] Please take a look this too :)

I'll reply there but don't think imposing such extra logic on TP is a
good idea.

I'll reply on that thread too. :)


After a quick glance, the ioblame seems to carry all IO accounting
info through the first bio in the request. If so, why don't you use
the request structure for that?

Because there are bio based drivers which don't use requests at all.

What I thought for such drivers was dynamic allocation in their ->make_request_fn, but because we don't have a block_bio_issue TP, Nevermind. :)


Thanks,
Namhyung Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/