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.html Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> Acked-by: Mike Snitzer <snitzer@redhat.com> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
					parent
					
						
							
								7652113c2f
							
						
					
				
			
			
				commit
				
					
						75afb35299
					
				
			
		
					 2 changed files with 15 additions and 2 deletions
				
			
		|  | @ -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, | ||||||
| 		__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, | ||||||
| 		__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 */ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jun'ichi Nomura
				Jun'ichi Nomura