summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinchan Kim <minchan.kim@gmail.com>2009-09-08 21:56:38 +0200
committerJens Axboe <jens.axboe@oracle.com>2009-09-11 14:34:34 +0200
commit01edede41e352e4879a89cdc5468f72ffc89b713 (patch)
tree5467323ee7ed8ff6178fcdae44e9f3ddab078308
parent01e97f6b897bf06ec83375d691f2f4d57f5b3a09 (diff)
downloadlinux-stable-01edede41e352e4879a89cdc5468f72ffc89b713.tar.gz
linux-stable-01edede41e352e4879a89cdc5468f72ffc89b713.tar.bz2
linux-stable-01edede41e352e4879a89cdc5468f72ffc89b713.zip
block: trace bio queueing trial only when it occurs
If BIO is discarded or cross over end of device, BIO queueing trial doesn't occur. Actually the trace was called just before make_request at first: [PATCH] Block queue IO tracing support (blktrace) as of 2006-03-23      2056a782f8e7e65fd4bfd027506b4ce1c5e9ccd4 And then 2 patches added some checks between them: [PATCH] md: check bio address after mapping through partitions        5ddfe9691c91a244e8d1be597b6428fcefd58103, [BLOCK] Don't allow empty barriers to be passed down to queues that don't grok them        51fd77bd9f512ab6cc9df0733ba1caaab89eb957 It breaks original goal. Let's trace it only when it happens. Signed-off-by: Minchan Kim <minchan.kim@gmail.com> Acked-by: Wu Fengguang <fengguang.wu@intel.com> Cc: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-rw-r--r--block/blk-core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 93051d151635..982d634e67f9 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1462,8 +1462,6 @@ static inline void __generic_make_request(struct bio *bio)
if (old_sector != -1)
trace_block_remap(q, bio, old_dev, old_sector);
- trace_block_bio_queue(q, bio);
-
old_sector = bio->bi_sector;
old_dev = bio->bi_bdev->bd_dev;
@@ -1476,6 +1474,8 @@ static inline void __generic_make_request(struct bio *bio)
goto end_io;
}
+ trace_block_bio_queue(q, bio);
+
ret = q->make_request_fn(q, bio);
} while (ret);