Messages in this thread Patch in this message | | | Date | Thu, 6 Jan 2011 13:43:31 -0500 | From | Mathieu Desnoyers <> | Subject | [PATCH] trace event block fix unassigned field |
| |
The "error" field in block_bio_complete is not assigned, leaving the memory area uninitialized (keeping garbage data). Pass an additional tracepoint argument to this event to initialize this field.
From: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.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> CC: Alan.Brunelle@hp.com --- drivers/md/dm.c | 2 +- include/trace/events/block.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-)
Index: linux-2.6-lttng/include/trace/events/block.h =================================================================== --- linux-2.6-lttng.orig/include/trace/events/block.h +++ linux-2.6-lttng/include/trace/events/block.h @@ -206,15 +206,16 @@ TRACE_EVENT(block_bio_bounce, * block_bio_complete - completed all work on the block operation * @q: queue holding the block operation * @bio: block operation completed + * @error: io error value * * This tracepoint indicates there is no further work to do on this * block IO operation @bio. */ TRACE_EVENT(block_bio_complete, - TP_PROTO(struct request_queue *q, struct bio *bio), + TP_PROTO(struct request_queue *q, struct bio *bio, int error), - TP_ARGS(q, bio), + TP_ARGS(q, bio, error), TP_STRUCT__entry( __field( dev_t, dev ) @@ -228,6 +229,7 @@ TRACE_EVENT(block_bio_complete, __entry->dev = bio->bi_bdev->bd_dev; __entry->sector = bio->bi_sector; __entry->nr_sector = bio->bi_size >> 9; + __entry->error = error; blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); ), Index: linux-2.6-lttng/drivers/md/dm.c =================================================================== --- linux-2.6-lttng.orig/drivers/md/dm.c +++ linux-2.6-lttng/drivers/md/dm.c @@ -659,7 +659,7 @@ static void dec_pending(struct dm_io *io free_io(md, io); if (io_error != DM_ENDIO_REQUEUE) { - trace_block_bio_complete(md->queue, bio); + trace_block_bio_complete(md->queue, bio, io_error); bio_endio(bio, io_error); } -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
| |