提交 e742fc32 编写于 作者: M Mike Christie 提交者: Jens Axboe

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: NMike Christie <mchristi@redhat.com>
Reviewed-by: NHannes Reinecke <hare@suse.com>
Signed-off-by: NJens Axboe <axboe@fb.com>
上级 796a5cf0
...@@ -312,7 +312,8 @@ static void iblock_bio_done(struct bio *bio) ...@@ -312,7 +312,8 @@ static void iblock_bio_done(struct bio *bio)
} }
static struct 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 iblock_dev *ib_dev = IBLOCK_DEV(cmd->se_dev);
struct bio *bio; struct bio *bio;
...@@ -334,7 +335,7 @@ iblock_get_bio(struct se_cmd *cmd, sector_t lba, u32 sg_num, int rw) ...@@ -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_private = cmd;
bio->bi_end_io = &iblock_bio_done; bio->bi_end_io = &iblock_bio_done;
bio->bi_iter.bi_sector = lba; bio->bi_iter.bi_sector = lba;
bio->bi_rw = rw; bio_set_op_attrs(bio, op, op_flags);
return bio; return bio;
} }
...@@ -480,7 +481,7 @@ iblock_execute_write_same(struct se_cmd *cmd) ...@@ -480,7 +481,7 @@ iblock_execute_write_same(struct se_cmd *cmd)
goto fail; goto fail;
cmd->priv = ibr; 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) if (!bio)
goto fail_free_ibr; goto fail_free_ibr;
...@@ -493,7 +494,8 @@ iblock_execute_write_same(struct se_cmd *cmd) ...@@ -493,7 +494,8 @@ iblock_execute_write_same(struct se_cmd *cmd)
while (bio_add_page(bio, sg_page(sg), sg->length, sg->offset) while (bio_add_page(bio, sg_page(sg), sg->length, sg->offset)
!= sg->length) { != 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) if (!bio)
goto fail_put_bios; goto fail_put_bios;
...@@ -679,8 +681,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, ...@@ -679,8 +681,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
struct scatterlist *sg; struct scatterlist *sg;
u32 sg_num = sgl_nents; u32 sg_num = sgl_nents;
unsigned bio_cnt; unsigned bio_cnt;
int rw = 0; int i, op, op_flags = 0;
int i;
if (data_direction == DMA_TO_DEVICE) { if (data_direction == DMA_TO_DEVICE) {
struct iblock_dev *ib_dev = IBLOCK_DEV(dev); 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, ...@@ -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 * Force writethrough using WRITE_FUA if a volatile write cache
* is not enabled, or if initiator set the Force Unit Access bit. * 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 (test_bit(QUEUE_FLAG_FUA, &q->queue_flags)) {
if (cmd->se_cmd_flags & SCF_FUA) if (cmd->se_cmd_flags & SCF_FUA)
rw = WRITE_FUA; op_flags = WRITE_FUA;
else if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) else if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags))
rw = WRITE_FUA; op_flags = WRITE_FUA;
else
rw = WRITE;
} else {
rw = WRITE;
} }
} else { } else {
rw = READ; op = REQ_OP_READ;
} }
ibr = kzalloc(sizeof(struct iblock_req), GFP_KERNEL); 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, ...@@ -714,7 +712,7 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
return 0; 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) if (!bio)
goto fail_free_ibr; goto fail_free_ibr;
...@@ -738,7 +736,8 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, ...@@ -738,7 +736,8 @@ iblock_execute_rw(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
bio_cnt = 0; 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) if (!bio)
goto fail_put_bios; goto fail_put_bios;
......
...@@ -922,7 +922,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents, ...@@ -922,7 +922,7 @@ pscsi_map_sg(struct se_cmd *cmd, struct scatterlist *sgl, u32 sgl_nents,
goto fail; goto fail;
if (rw) if (rw)
bio->bi_rw |= REQ_WRITE; bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
pr_debug("PSCSI: Allocated bio: %p," pr_debug("PSCSI: Allocated bio: %p,"
" dir: %s nr_vecs: %d\n", bio, " dir: %s nr_vecs: %d\n", bio,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册