forked from mirrors/linux
		
	blktrace: use op accessors
Have blktrace use the req/bio op accessor to get the REQ_OP. Signed-off-by: Mike Christie <mchristi@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
							parent
							
								
									c2df40dfb8
								
							
						
					
					
						commit
						1b9a9ab78b
					
				
					 4 changed files with 65 additions and 42 deletions
				
			
		|  | @ -118,7 +118,7 @@ static inline int blk_cmd_buf_len(struct request *rq) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| extern void blk_dump_cmd(char *buf, struct request *rq); | extern void blk_dump_cmd(char *buf, struct request *rq); | ||||||
| extern void blk_fill_rwbs(char *rwbs, u32 rw, int bytes); | extern void blk_fill_rwbs(char *rwbs, int op, u32 rw, int bytes); | ||||||
| 
 | 
 | ||||||
| #endif /* CONFIG_EVENT_TRACING && CONFIG_BLOCK */ | #endif /* CONFIG_EVENT_TRACING && CONFIG_BLOCK */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -27,7 +27,8 @@ DECLARE_EVENT_CLASS(bcache_request, | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->orig_sector	= bio->bi_iter.bi_sector - 16; | 		__entry->orig_sector	= bio->bi_iter.bi_sector - 16; | ||||||
| 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
| 	TP_printk("%d,%d %s %llu + %u (from %d,%d @ %llu)", | 	TP_printk("%d,%d %s %llu + %u (from %d,%d @ %llu)", | ||||||
|  | @ -101,7 +102,8 @@ DECLARE_EVENT_CLASS(bcache_bio, | ||||||
| 		__entry->dev		= bio->bi_bdev->bd_dev; | 		__entry->dev		= bio->bi_bdev->bd_dev; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
| 	TP_printk("%d,%d  %s %llu + %u", | 	TP_printk("%d,%d  %s %llu + %u", | ||||||
|  | @ -136,7 +138,8 @@ TRACE_EVENT(bcache_read, | ||||||
| 		__entry->dev		= bio->bi_bdev->bd_dev; | 		__entry->dev		= bio->bi_bdev->bd_dev; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		__entry->cache_hit = hit; | 		__entry->cache_hit = hit; | ||||||
| 		__entry->bypass = bypass; | 		__entry->bypass = bypass; | ||||||
| 	), | 	), | ||||||
|  | @ -167,7 +170,8 @@ TRACE_EVENT(bcache_write, | ||||||
| 		__entry->inode		= inode; | 		__entry->inode		= inode; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | 		__entry->nr_sector	= bio->bi_iter.bi_size >> 9; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		__entry->writeback = writeback; | 		__entry->writeback = writeback; | ||||||
| 		__entry->bypass = bypass; | 		__entry->bypass = bypass; | ||||||
| 	), | 	), | ||||||
|  |  | ||||||
|  | @ -84,7 +84,8 @@ DECLARE_EVENT_CLASS(block_rq_with_error, | ||||||
| 					0 : blk_rq_sectors(rq); | 					0 : blk_rq_sectors(rq); | ||||||
| 		__entry->errors    = rq->errors; | 		__entry->errors    = rq->errors; | ||||||
| 
 | 
 | ||||||
| 		blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); | 		blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, | ||||||
|  | 			      blk_rq_bytes(rq)); | ||||||
| 		blk_dump_cmd(__get_str(cmd), rq); | 		blk_dump_cmd(__get_str(cmd), rq); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -162,7 +163,7 @@ TRACE_EVENT(block_rq_complete, | ||||||
| 		__entry->nr_sector = nr_bytes >> 9; | 		__entry->nr_sector = nr_bytes >> 9; | ||||||
| 		__entry->errors    = rq->errors; | 		__entry->errors    = rq->errors; | ||||||
| 
 | 
 | ||||||
| 		blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, nr_bytes); | 		blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, nr_bytes); | ||||||
| 		blk_dump_cmd(__get_str(cmd), rq); | 		blk_dump_cmd(__get_str(cmd), rq); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -198,7 +199,8 @@ DECLARE_EVENT_CLASS(block_rq, | ||||||
| 		__entry->bytes     = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? | 		__entry->bytes     = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? | ||||||
| 					blk_rq_bytes(rq) : 0; | 					blk_rq_bytes(rq) : 0; | ||||||
| 
 | 
 | ||||||
| 		blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); | 		blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, | ||||||
|  | 			      blk_rq_bytes(rq)); | ||||||
| 		blk_dump_cmd(__get_str(cmd), rq); | 		blk_dump_cmd(__get_str(cmd), rq); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
| 	), | 	), | ||||||
|  | @ -272,7 +274,8 @@ TRACE_EVENT(block_bio_bounce, | ||||||
| 					  bio->bi_bdev->bd_dev : 0; | 					  bio->bi_bdev->bd_dev : 0; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio_sectors(bio); | 		__entry->nr_sector	= bio_sectors(bio); | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -310,7 +313,8 @@ TRACE_EVENT(block_bio_complete, | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio_sectors(bio); | 		__entry->nr_sector	= bio_sectors(bio); | ||||||
| 		__entry->error		= error; | 		__entry->error		= error; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
| 	TP_printk("%d,%d %s %llu + %u [%d]", | 	TP_printk("%d,%d %s %llu + %u [%d]", | ||||||
|  | @ -337,7 +341,8 @@ DECLARE_EVENT_CLASS(block_bio_merge, | ||||||
| 		__entry->dev		= bio->bi_bdev->bd_dev; | 		__entry->dev		= bio->bi_bdev->bd_dev; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio_sectors(bio); | 		__entry->nr_sector	= bio_sectors(bio); | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -404,7 +409,8 @@ TRACE_EVENT(block_bio_queue, | ||||||
| 		__entry->dev		= bio->bi_bdev->bd_dev; | 		__entry->dev		= bio->bi_bdev->bd_dev; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->nr_sector	= bio_sectors(bio); | 		__entry->nr_sector	= bio_sectors(bio); | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -432,7 +438,7 @@ DECLARE_EVENT_CLASS(block_get_rq, | ||||||
| 		__entry->dev		= bio ? bio->bi_bdev->bd_dev : 0; | 		__entry->dev		= bio ? bio->bi_bdev->bd_dev : 0; | ||||||
| 		__entry->sector		= bio ? bio->bi_iter.bi_sector : 0; | 		__entry->sector		= bio ? bio->bi_iter.bi_sector : 0; | ||||||
| 		__entry->nr_sector	= bio ? bio_sectors(bio) : 0; | 		__entry->nr_sector	= bio ? bio_sectors(bio) : 0; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, | 		blk_fill_rwbs(__entry->rwbs, bio ? bio_op(bio) : 0, | ||||||
| 			      bio ? bio->bi_rw : 0, __entry->nr_sector); | 			      bio ? bio->bi_rw : 0, __entry->nr_sector); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
|         ), |         ), | ||||||
|  | @ -567,7 +573,8 @@ TRACE_EVENT(block_split, | ||||||
| 		__entry->dev		= bio->bi_bdev->bd_dev; | 		__entry->dev		= bio->bi_bdev->bd_dev; | ||||||
| 		__entry->sector		= bio->bi_iter.bi_sector; | 		__entry->sector		= bio->bi_iter.bi_sector; | ||||||
| 		__entry->new_sector	= new_sector; | 		__entry->new_sector	= new_sector; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 		memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
|  | @ -610,7 +617,8 @@ TRACE_EVENT(block_bio_remap, | ||||||
| 		__entry->nr_sector	= bio_sectors(bio); | 		__entry->nr_sector	= bio_sectors(bio); | ||||||
| 		__entry->old_dev	= dev; | 		__entry->old_dev	= dev; | ||||||
| 		__entry->old_sector	= from; | 		__entry->old_sector	= from; | ||||||
| 		blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 		blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, | ||||||
|  | 			      bio->bi_iter.bi_size); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
| 	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", | 	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", | ||||||
|  | @ -656,7 +664,8 @@ TRACE_EVENT(block_rq_remap, | ||||||
| 		__entry->old_dev	= dev; | 		__entry->old_dev	= dev; | ||||||
| 		__entry->old_sector	= from; | 		__entry->old_sector	= from; | ||||||
| 		__entry->nr_bios	= blk_rq_count_bios(rq); | 		__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, req_op(rq), rq->cmd_flags, | ||||||
|  | 			      blk_rq_bytes(rq)); | ||||||
| 	), | 	), | ||||||
| 
 | 
 | ||||||
| 	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu %u", | 	TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu %u", | ||||||
|  |  | ||||||
|  | @ -199,7 +199,8 @@ static const u32 ddir_act[2] = { BLK_TC_ACT(BLK_TC_READ), | ||||||
|  * blk_io_trace structure and places it in a per-cpu subbuffer. |  * blk_io_trace structure and places it in a per-cpu subbuffer. | ||||||
|  */ |  */ | ||||||
| static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, | static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, | ||||||
| 		     int rw, u32 what, int error, int pdu_len, void *pdu_data) | 		     int op, int op_flags, u32 what, int error, int pdu_len, | ||||||
|  | 		     void *pdu_data) | ||||||
| { | { | ||||||
| 	struct task_struct *tsk = current; | 	struct task_struct *tsk = current; | ||||||
| 	struct ring_buffer_event *event = NULL; | 	struct ring_buffer_event *event = NULL; | ||||||
|  | @ -214,13 +215,14 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, | ||||||
| 	if (unlikely(bt->trace_state != Blktrace_running && !blk_tracer)) | 	if (unlikely(bt->trace_state != Blktrace_running && !blk_tracer)) | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	what |= ddir_act[rw & WRITE]; | 	what |= ddir_act[op_is_write(op) ? WRITE : READ]; | ||||||
| 	what |= MASK_TC_BIT(rw, SYNC); | 	what |= MASK_TC_BIT(op_flags, SYNC); | ||||||
| 	what |= MASK_TC_BIT(rw, RAHEAD); | 	what |= MASK_TC_BIT(op_flags, RAHEAD); | ||||||
| 	what |= MASK_TC_BIT(rw, META); | 	what |= MASK_TC_BIT(op_flags, META); | ||||||
| 	what |= MASK_TC_BIT(rw, DISCARD); | 	what |= MASK_TC_BIT(op_flags, FLUSH); | ||||||
| 	what |= MASK_TC_BIT(rw, FLUSH); | 	what |= MASK_TC_BIT(op_flags, FUA); | ||||||
| 	what |= MASK_TC_BIT(rw, FUA); | 	if (op == REQ_OP_DISCARD) | ||||||
|  | 		what |= BLK_TC_ACT(BLK_TC_DISCARD); | ||||||
| 
 | 
 | ||||||
| 	pid = tsk->pid; | 	pid = tsk->pid; | ||||||
| 	if (act_log_check(bt, what, sector, pid)) | 	if (act_log_check(bt, what, sector, pid)) | ||||||
|  | @ -708,11 +710,11 @@ static void blk_add_trace_rq(struct request_queue *q, struct request *rq, | ||||||
| 
 | 
 | ||||||
| 	if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { | 	if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { | ||||||
| 		what |= BLK_TC_ACT(BLK_TC_PC); | 		what |= BLK_TC_ACT(BLK_TC_PC); | ||||||
| 		__blk_add_trace(bt, 0, nr_bytes, rq->cmd_flags, | 		__blk_add_trace(bt, 0, nr_bytes, req_op(rq), rq->cmd_flags, | ||||||
| 				what, rq->errors, rq->cmd_len, rq->cmd); | 				what, rq->errors, rq->cmd_len, rq->cmd); | ||||||
| 	} else  { | 	} else  { | ||||||
| 		what |= BLK_TC_ACT(BLK_TC_FS); | 		what |= BLK_TC_ACT(BLK_TC_FS); | ||||||
| 		__blk_add_trace(bt, blk_rq_pos(rq), nr_bytes, | 		__blk_add_trace(bt, blk_rq_pos(rq), nr_bytes, req_op(rq), | ||||||
| 				rq->cmd_flags, what, rq->errors, 0, NULL); | 				rq->cmd_flags, what, rq->errors, 0, NULL); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -770,7 +772,7 @@ static void blk_add_trace_bio(struct request_queue *q, struct bio *bio, | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	__blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | 	__blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | ||||||
| 			bio->bi_rw, what, error, 0, NULL); | 			bio_op(bio), bio->bi_rw, what, error, 0, NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void blk_add_trace_bio_bounce(void *ignore, | static void blk_add_trace_bio_bounce(void *ignore, | ||||||
|  | @ -818,7 +820,8 @@ static void blk_add_trace_getrq(void *ignore, | ||||||
| 		struct blk_trace *bt = q->blk_trace; | 		struct blk_trace *bt = q->blk_trace; | ||||||
| 
 | 
 | ||||||
| 		if (bt) | 		if (bt) | ||||||
| 			__blk_add_trace(bt, 0, 0, rw, BLK_TA_GETRQ, 0, 0, NULL); | 			__blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_GETRQ, 0, 0, | ||||||
|  | 					NULL); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -833,7 +836,7 @@ static void blk_add_trace_sleeprq(void *ignore, | ||||||
| 		struct blk_trace *bt = q->blk_trace; | 		struct blk_trace *bt = q->blk_trace; | ||||||
| 
 | 
 | ||||||
| 		if (bt) | 		if (bt) | ||||||
| 			__blk_add_trace(bt, 0, 0, rw, BLK_TA_SLEEPRQ, | 			__blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_SLEEPRQ, | ||||||
| 					0, 0, NULL); | 					0, 0, NULL); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -843,7 +846,7 @@ static void blk_add_trace_plug(void *ignore, struct request_queue *q) | ||||||
| 	struct blk_trace *bt = q->blk_trace; | 	struct blk_trace *bt = q->blk_trace; | ||||||
| 
 | 
 | ||||||
| 	if (bt) | 	if (bt) | ||||||
| 		__blk_add_trace(bt, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); | 		__blk_add_trace(bt, 0, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void blk_add_trace_unplug(void *ignore, struct request_queue *q, | static void blk_add_trace_unplug(void *ignore, struct request_queue *q, | ||||||
|  | @ -860,7 +863,7 @@ static void blk_add_trace_unplug(void *ignore, struct request_queue *q, | ||||||
| 		else | 		else | ||||||
| 			what = BLK_TA_UNPLUG_TIMER; | 			what = BLK_TA_UNPLUG_TIMER; | ||||||
| 
 | 
 | ||||||
| 		__blk_add_trace(bt, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu); | 		__blk_add_trace(bt, 0, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -874,8 +877,9 @@ static void blk_add_trace_split(void *ignore, | ||||||
| 		__be64 rpdu = cpu_to_be64(pdu); | 		__be64 rpdu = cpu_to_be64(pdu); | ||||||
| 
 | 
 | ||||||
| 		__blk_add_trace(bt, bio->bi_iter.bi_sector, | 		__blk_add_trace(bt, bio->bi_iter.bi_sector, | ||||||
| 				bio->bi_iter.bi_size, bio->bi_rw, BLK_TA_SPLIT, | 				bio->bi_iter.bi_size, bio_op(bio), bio->bi_rw, | ||||||
| 				bio->bi_error, sizeof(rpdu), &rpdu); | 				BLK_TA_SPLIT, bio->bi_error, sizeof(rpdu), | ||||||
|  | 				&rpdu); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -907,7 +911,7 @@ static void blk_add_trace_bio_remap(void *ignore, | ||||||
| 	r.sector_from = cpu_to_be64(from); | 	r.sector_from = cpu_to_be64(from); | ||||||
| 
 | 
 | ||||||
| 	__blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | 	__blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | ||||||
| 			bio->bi_rw, BLK_TA_REMAP, bio->bi_error, | 			bio_op(bio), bio->bi_rw, BLK_TA_REMAP, bio->bi_error, | ||||||
| 			sizeof(r), &r); | 			sizeof(r), &r); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -940,7 +944,7 @@ static void blk_add_trace_rq_remap(void *ignore, | ||||||
| 	r.sector_from = cpu_to_be64(from); | 	r.sector_from = cpu_to_be64(from); | ||||||
| 
 | 
 | ||||||
| 	__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), | 	__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), | ||||||
| 			rq_data_dir(rq), BLK_TA_REMAP, !!rq->errors, | 			rq_data_dir(rq), 0, BLK_TA_REMAP, !!rq->errors, | ||||||
| 			sizeof(r), &r); | 			sizeof(r), &r); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -965,10 +969,10 @@ void blk_add_driver_data(struct request_queue *q, | ||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	if (rq->cmd_type == REQ_TYPE_BLOCK_PC) | 	if (rq->cmd_type == REQ_TYPE_BLOCK_PC) | ||||||
| 		__blk_add_trace(bt, 0, blk_rq_bytes(rq), 0, | 		__blk_add_trace(bt, 0, blk_rq_bytes(rq), 0, 0, | ||||||
| 				BLK_TA_DRV_DATA, rq->errors, len, data); | 				BLK_TA_DRV_DATA, rq->errors, len, data); | ||||||
| 	else | 	else | ||||||
| 		__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0, | 		__blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0, 0, | ||||||
| 				BLK_TA_DRV_DATA, rq->errors, len, data); | 				BLK_TA_DRV_DATA, rq->errors, len, data); | ||||||
| } | } | ||||||
| EXPORT_SYMBOL_GPL(blk_add_driver_data); | EXPORT_SYMBOL_GPL(blk_add_driver_data); | ||||||
|  | @ -1769,21 +1773,27 @@ void blk_dump_cmd(char *buf, struct request *rq) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void blk_fill_rwbs(char *rwbs, u32 rw, int bytes) | void blk_fill_rwbs(char *rwbs, int op, u32 rw, int bytes) | ||||||
| { | { | ||||||
| 	int i = 0; | 	int i = 0; | ||||||
| 
 | 
 | ||||||
| 	if (rw & REQ_FLUSH) | 	if (rw & REQ_FLUSH) | ||||||
| 		rwbs[i++] = 'F'; | 		rwbs[i++] = 'F'; | ||||||
| 
 | 
 | ||||||
| 	if (rw & WRITE) | 	switch (op) { | ||||||
|  | 	case REQ_OP_WRITE: | ||||||
|  | 	case REQ_OP_WRITE_SAME: | ||||||
| 		rwbs[i++] = 'W'; | 		rwbs[i++] = 'W'; | ||||||
| 	else if (rw & REQ_DISCARD) | 		break; | ||||||
|  | 	case REQ_OP_DISCARD: | ||||||
| 		rwbs[i++] = 'D'; | 		rwbs[i++] = 'D'; | ||||||
| 	else if (bytes) | 		break; | ||||||
|  | 	case REQ_OP_READ: | ||||||
| 		rwbs[i++] = 'R'; | 		rwbs[i++] = 'R'; | ||||||
| 	else | 		break; | ||||||
|  | 	default: | ||||||
| 		rwbs[i++] = 'N'; | 		rwbs[i++] = 'N'; | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	if (rw & REQ_FUA) | 	if (rw & REQ_FUA) | ||||||
| 		rwbs[i++] = 'F'; | 		rwbs[i++] = 'F'; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Mike Christie
						Mike Christie