mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	target: use bio op accessors
Separate the op from the rq_flag_bits and have the target layer set/get the bio using bio_set_op_attrs/bio_op. Signed-off-by: Mike Christie <mchristi@redhat.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
							parent
							
								
									796a5cf083
								
							
						
					
					
						commit
						e742fc32fc
					
				| @ -312,7 +312,8 @@ static void iblock_bio_done(struct bio *bio) | ||||
| } | ||||
| 
 | ||||
| static struct bio * | ||||
| iblock_get_bio(struct se_cmd *cmd, sector_t lba, u32 sg_num, int rw) | ||||
| iblock_get_bio(struct se_cmd *cmd, sector_t lba, u32 sg_num, int op, | ||||
| 	       int op_flags) | ||||
| { | ||||
| 	struct iblock_dev *ib_dev = IBLOCK_DEV(cmd->se_dev); | ||||
| 	struct bio *bio; | ||||
| @ -334,7 +335,7 @@ iblock_get_bio(struct se_cmd *cmd, sector_t lba, u32 sg_num, int rw) | ||||
| 	bio->bi_private = cmd; | ||||
| 	bio->bi_end_io = &iblock_bio_done; | ||||
| 	bio->bi_iter.bi_sector = lba; | ||||
| 	bio->bi_rw = rw; | ||||
| 	bio_set_op_attrs(bio, op, op_flags); | ||||
| 
 | ||||
| 	return bio; | ||||
| } | ||||
| @ -480,7 +481,7 @@ iblock_execute_write_same(struct se_cmd *cmd) | ||||
| 		goto fail; | ||||
| 	cmd->priv = ibr; | ||||
| 
 | ||||
| 	bio = iblock_get_bio(cmd, block_lba, 1, WRITE); | ||||
| 	bio = iblock_get_bio(cmd, block_lba, 1, REQ_OP_WRITE, 0); | ||||
| 	if (!bio) | ||||
| 		goto fail_free_ibr; | ||||
| 
 | ||||
| @ -493,7 +494,8 @@ iblock_execute_write_same(struct se_cmd *cmd) | ||||
| 		while (bio_add_page(bio, sg_page(sg), sg->length, sg->offset) | ||||
| 				!= sg->length) { | ||||
| 
 | ||||
| 			bio = iblock_get_bio(cmd, block_lba, 1, WRITE); | ||||
| 			bio = iblock_get_bio(cmd, block_lba, 1, REQ_OP_WRITE, | ||||
| 					     0); | ||||
| 			if (!bio) | ||||
| 				goto fail_put_bios; | ||||
| 
 | ||||
| @ -679,8 +681,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | ||||
| 	struct scatterlist *sg; | ||||
| 	u32 sg_num = sgl_nents; | ||||
| 	unsigned bio_cnt; | ||||
| 	int rw = 0; | ||||
| 	int i; | ||||
| 	int i, op, op_flags = 0; | ||||
| 
 | ||||
| 	if (data_direction == DMA_TO_DEVICE) { | ||||
| 		struct iblock_dev *ib_dev = IBLOCK_DEV(dev); | ||||
| @ -689,18 +690,15 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | ||||
| 		 * Force writethrough using WRITE_FUA if a volatile write cache | ||||
| 		 * is not enabled, or if initiator set the Force Unit Access bit. | ||||
| 		 */ | ||||
| 		op = REQ_OP_WRITE; | ||||
| 		if (test_bit(QUEUE_FLAG_FUA, &q->queue_flags)) { | ||||
| 			if (cmd->se_cmd_flags & SCF_FUA) | ||||
| 				rw = WRITE_FUA; | ||||
| 				op_flags = WRITE_FUA; | ||||
| 			else if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) | ||||
| 				rw = WRITE_FUA; | ||||
| 			else | ||||
| 				rw = WRITE; | ||||
| 		} else { | ||||
| 			rw = WRITE; | ||||
| 				op_flags = WRITE_FUA; | ||||
| 		} | ||||
| 	} else { | ||||
| 		rw = READ; | ||||
| 		op = REQ_OP_READ; | ||||
| 	} | ||||
| 
 | ||||
| 	ibr = kzalloc(sizeof(struct iblock_req), GFP_KERNEL); | ||||
| @ -714,7 +712,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	bio = iblock_get_bio(cmd, block_lba, sgl_nents, rw); | ||||
| 	bio = iblock_get_bio(cmd, block_lba, sgl_nents, op, op_flags); | ||||
| 	if (!bio) | ||||
| 		goto fail_free_ibr; | ||||
| 
 | ||||
| @ -738,7 +736,8 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | ||||
| 				bio_cnt = 0; | ||||
| 			} | ||||
| 
 | ||||
| 			bio = iblock_get_bio(cmd, block_lba, sg_num, rw); | ||||
| 			bio = iblock_get_bio(cmd, block_lba, sg_num, op, | ||||
| 					     op_flags); | ||||
| 			if (!bio) | ||||
| 				goto fail_put_bios; | ||||
| 
 | ||||
|  | ||||
| @ -922,7 +922,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, | ||||
| 					goto fail; | ||||
| 
 | ||||
| 				if (rw) | ||||
| 					bio->bi_rw |= REQ_WRITE; | ||||
| 					bio_set_op_attrs(bio, REQ_OP_WRITE, 0); | ||||
| 
 | ||||
| 				pr_debug("PSCSI: Allocated bio: %p," | ||||
| 					" dir: %s nr_vecs: %d\n", bio, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Mike Christie
						Mike Christie