Commit 75afb352 authored by Jun'ichi Nomura's avatar Jun'ichi Nomura Committed by Jens Axboe

block: Add nr_bios to block_rq_remap tracepoint

Adding the number of bios in a remapped request to 'block_rq_remap'
tracepoint.

Request remapper clones bios in a request to track the completion
status of each bio. So the number of bios can be useful information
for investigation.

Related discussions:
  http://www.redhat.com/archives/dm-devel/2013-August/msg00084.html
  http://www.redhat.com/archives/dm-devel/2013-September/msg00024.htmlSigned-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Acked-by: default avatarMike Snitzer <snitzer@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 7652113c
...@@ -862,6 +862,17 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq) ...@@ -862,6 +862,17 @@ static inline unsigned int blk_rq_get_max_sectors(struct request *rq)
return blk_queue_get_max_sectors(q, rq->cmd_flags); return blk_queue_get_max_sectors(q, rq->cmd_flags);
} }
static inline unsigned int blk_rq_count_bios(struct request *rq)
{
unsigned int nr_bios = 0;
struct bio *bio;
__rq_for_each_bio(bio, rq)
nr_bios++;
return nr_bios;
}
/* /*
* Request issue related functions. * Request issue related functions.
*/ */
......
...@@ -618,6 +618,7 @@ TRACE_EVENT(block_rq_remap, ...@@ -618,6 +618,7 @@ TRACE_EVENT(block_rq_remap,
__field( unsigned int, nr_sector ) __field( unsigned int, nr_sector )
__field( dev_t, old_dev ) __field( dev_t, old_dev )
__field( sector_t, old_sector ) __field( sector_t, old_sector )
__field( unsigned int, nr_bios )
__array( char, rwbs, RWBS_LEN) __array( char, rwbs, RWBS_LEN)
), ),
...@@ -627,15 +628,16 @@ TRACE_EVENT(block_rq_remap, ...@@ -627,15 +628,16 @@ TRACE_EVENT(block_rq_remap,
__entry->nr_sector = blk_rq_sectors(rq); __entry->nr_sector = blk_rq_sectors(rq);
__entry->old_dev = dev; __entry->old_dev = dev;
__entry->old_sector = from; __entry->old_sector = from;
__entry->nr_bios = blk_rq_count_bios(rq);
blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq));
), ),
TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu %u",
MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs,
(unsigned long long)__entry->sector, (unsigned long long)__entry->sector,
__entry->nr_sector, __entry->nr_sector,
MAJOR(__entry->old_dev), MINOR(__entry->old_dev), MAJOR(__entry->old_dev), MINOR(__entry->old_dev),
(unsigned long long)__entry->old_sector) (unsigned long long)__entry->old_sector, __entry->nr_bios)
); );
#endif /* _TRACE_BLOCK_H */ #endif /* _TRACE_BLOCK_H */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment