mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	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_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 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,8 @@ DECLARE_EVENT_CLASS(bcache_request,
 | 
			
		|||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__entry->orig_sector	= bio->bi_iter.bi_sector - 16;
 | 
			
		||||
		__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)",
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +102,8 @@ DECLARE_EVENT_CLASS(bcache_bio,
 | 
			
		|||
		__entry->dev		= bio->bi_bdev->bd_dev;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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",
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +138,8 @@ TRACE_EVENT(bcache_read,
 | 
			
		|||
		__entry->dev		= bio->bi_bdev->bd_dev;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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->bypass = bypass;
 | 
			
		||||
	),
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +170,8 @@ TRACE_EVENT(bcache_write,
 | 
			
		|||
		__entry->inode		= inode;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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->bypass = bypass;
 | 
			
		||||
	),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,7 +84,8 @@ DECLARE_EVENT_CLASS(block_rq_with_error,
 | 
			
		|||
					0 : blk_rq_sectors(rq);
 | 
			
		||||
		__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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +163,7 @@ TRACE_EVENT(block_rq_complete,
 | 
			
		|||
		__entry->nr_sector = nr_bytes >> 9;
 | 
			
		||||
		__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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -198,7 +199,8 @@ DECLARE_EVENT_CLASS(block_rq,
 | 
			
		|||
		__entry->bytes     = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ?
 | 
			
		||||
					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);
 | 
			
		||||
		memcpy(__entry->comm, current->comm, TASK_COMM_LEN);
 | 
			
		||||
	),
 | 
			
		||||
| 
						 | 
				
			
			@ -272,7 +274,8 @@ TRACE_EVENT(block_bio_bounce,
 | 
			
		|||
					  bio->bi_bdev->bd_dev : 0;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -310,7 +313,8 @@ TRACE_EVENT(block_bio_complete,
 | 
			
		|||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__entry->nr_sector	= bio_sectors(bio);
 | 
			
		||||
		__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]",
 | 
			
		||||
| 
						 | 
				
			
			@ -337,7 +341,8 @@ DECLARE_EVENT_CLASS(block_bio_merge,
 | 
			
		|||
		__entry->dev		= bio->bi_bdev->bd_dev;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -404,7 +409,8 @@ TRACE_EVENT(block_bio_queue,
 | 
			
		|||
		__entry->dev		= bio->bi_bdev->bd_dev;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_sector;
 | 
			
		||||
		__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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -432,7 +438,7 @@ DECLARE_EVENT_CLASS(block_get_rq,
 | 
			
		|||
		__entry->dev		= bio ? bio->bi_bdev->bd_dev : 0;
 | 
			
		||||
		__entry->sector		= bio ? bio->bi_iter.bi_sector : 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);
 | 
			
		||||
		memcpy(__entry->comm, current->comm, TASK_COMM_LEN);
 | 
			
		||||
        ),
 | 
			
		||||
| 
						 | 
				
			
			@ -567,7 +573,8 @@ TRACE_EVENT(block_split,
 | 
			
		|||
		__entry->dev		= bio->bi_bdev->bd_dev;
 | 
			
		||||
		__entry->sector		= bio->bi_iter.bi_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);
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -610,7 +617,8 @@ TRACE_EVENT(block_bio_remap,
 | 
			
		|||
		__entry->nr_sector	= bio_sectors(bio);
 | 
			
		||||
		__entry->old_dev	= dev;
 | 
			
		||||
		__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",
 | 
			
		||||
| 
						 | 
				
			
			@ -656,7 +664,8 @@ TRACE_EVENT(block_rq_remap,
 | 
			
		|||
		__entry->old_dev	= dev;
 | 
			
		||||
		__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, req_op(rq), rq->cmd_flags,
 | 
			
		||||
			      blk_rq_bytes(rq));
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	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.
 | 
			
		||||
 */
 | 
			
		||||
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 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))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	what |= ddir_act[rw & WRITE];
 | 
			
		||||
	what |= MASK_TC_BIT(rw, SYNC);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, RAHEAD);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, META);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, DISCARD);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, FLUSH);
 | 
			
		||||
	what |= MASK_TC_BIT(rw, FUA);
 | 
			
		||||
	what |= ddir_act[op_is_write(op) ? WRITE : READ];
 | 
			
		||||
	what |= MASK_TC_BIT(op_flags, SYNC);
 | 
			
		||||
	what |= MASK_TC_BIT(op_flags, RAHEAD);
 | 
			
		||||
	what |= MASK_TC_BIT(op_flags, META);
 | 
			
		||||
	what |= MASK_TC_BIT(op_flags, FLUSH);
 | 
			
		||||
	what |= MASK_TC_BIT(op_flags, FUA);
 | 
			
		||||
	if (op == REQ_OP_DISCARD)
 | 
			
		||||
		what |= BLK_TC_ACT(BLK_TC_DISCARD);
 | 
			
		||||
 | 
			
		||||
	pid = tsk->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) {
 | 
			
		||||
		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);
 | 
			
		||||
	} else  {
 | 
			
		||||
		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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -770,7 +772,7 @@ static void blk_add_trace_bio(struct request_queue *q, struct bio *bio,
 | 
			
		|||
		return;
 | 
			
		||||
 | 
			
		||||
	__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,
 | 
			
		||||
| 
						 | 
				
			
			@ -818,7 +820,8 @@ static void blk_add_trace_getrq(void *ignore,
 | 
			
		|||
		struct blk_trace *bt = q->blk_trace;
 | 
			
		||||
 | 
			
		||||
		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;
 | 
			
		||||
 | 
			
		||||
		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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -843,7 +846,7 @@ static void blk_add_trace_plug(void *ignore, struct request_queue *q)
 | 
			
		|||
	struct blk_trace *bt = q->blk_trace;
 | 
			
		||||
 | 
			
		||||
	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,
 | 
			
		||||
| 
						 | 
				
			
			@ -860,7 +863,7 @@ static void blk_add_trace_unplug(void *ignore, struct request_queue *q,
 | 
			
		|||
		else
 | 
			
		||||
			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);
 | 
			
		||||
 | 
			
		||||
		__blk_add_trace(bt, bio->bi_iter.bi_sector,
 | 
			
		||||
				bio->bi_iter.bi_size, bio->bi_rw, BLK_TA_SPLIT,
 | 
			
		||||
				bio->bi_error, sizeof(rpdu), &rpdu);
 | 
			
		||||
				bio->bi_iter.bi_size, bio_op(bio), bio->bi_rw,
 | 
			
		||||
				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);
 | 
			
		||||
 | 
			
		||||
	__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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -940,7 +944,7 @@ static void blk_add_trace_rq_remap(void *ignore,
 | 
			
		|||
	r.sector_from = cpu_to_be64(from);
 | 
			
		||||
 | 
			
		||||
	__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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -965,10 +969,10 @@ void blk_add_driver_data(struct request_queue *q,
 | 
			
		|||
		return;
 | 
			
		||||
 | 
			
		||||
	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);
 | 
			
		||||
	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);
 | 
			
		||||
}
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
	if (rw & REQ_FLUSH)
 | 
			
		||||
		rwbs[i++] = 'F';
 | 
			
		||||
 | 
			
		||||
	if (rw & WRITE)
 | 
			
		||||
	switch (op) {
 | 
			
		||||
	case REQ_OP_WRITE:
 | 
			
		||||
	case REQ_OP_WRITE_SAME:
 | 
			
		||||
		rwbs[i++] = 'W';
 | 
			
		||||
	else if (rw & REQ_DISCARD)
 | 
			
		||||
		break;
 | 
			
		||||
	case REQ_OP_DISCARD:
 | 
			
		||||
		rwbs[i++] = 'D';
 | 
			
		||||
	else if (bytes)
 | 
			
		||||
		break;
 | 
			
		||||
	case REQ_OP_READ:
 | 
			
		||||
		rwbs[i++] = 'R';
 | 
			
		||||
	else
 | 
			
		||||
		break;
 | 
			
		||||
	default:
 | 
			
		||||
		rwbs[i++] = 'N';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (rw & REQ_FUA)
 | 
			
		||||
		rwbs[i++] = 'F';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue