trace event block fix unassigned field
Subsystems (2)
Mathieu Desnoyers
reviewerPATCH 1/1 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 <[email protected]>
--- drivers/md/dm.c | 2 +- include/trace/events/block.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-)
include/trace/events/block.h +4 -2
@@ -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); ),
drivers/md/dm.c +1 -1
@@ -659,7 +659,7 @@ static void dec_pending(struct dm_io *iofree_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); }
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com
Quoted 3 lines · Mathieu Desnoyers
The "error" field in
block_bio_completeis not assigned, leaving the memory area uninitialized (keeping garbage data). Pass an additional tracepoint argument to this event to initialize this field.
Thanks guys, applied.
Signature · 1 line
Jens Axboe
Mathieu Desnoyers
reviewerQuoted 6 lines · * Jens Axboe ([email protected]) wrote:
Quoted 3 lines · Mathieu Desnoyers
The "error" field in
block_bio_completeis not assigned, leaving the memory area uninitialized (keeping garbage data). Pass an additional tracepoint argument to this event to initialize this field.Thanks guys, applied.
Thanks Jens. A side-note for Frederic and Steven: for this patch specifically, going through the block layer tree seems like the right approach, because we also modify the tracepoint caller code.
Thanks,
Mathieu
Signature · 4 lines
Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com