forked from luck/tmp_suning_uos_patched
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