Re: [PATCH 28/45] target: use bio op accessors
On 06/06/2016 05:40 PM, Mike Christie wrote: On 06/06/2016 01:46 AM, Hannes Reinecke wrote: On 06/05/2016 09:32 PM, mchri...@redhat.com wrote: From: Mike ChristieSeparate 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 --- drivers/target/target_core_iblock.c | 29 ++--- drivers/target/target_core_pscsi.c | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index c25109c..22af12f 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c [ .. ] @@ -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, >queue_flags)) { if (cmd->se_cmd_flags & SCF_FUA) - rw = WRITE_FUA; + op_flags = WRITE_FUA; else if (!test_bit(QUEUE_FLAG_WC, >queue_flags)) - rw = WRITE_FUA; - else - rw = WRITE; - } else { - rw = WRITE; + op_flags = WRITE_FUA; } Wrong intendation. It should be ok. That line is for the QUEUE_FLAG_WC test. We end up with: op = REQ_OP_WRITE; if (test_bit(QUEUE_FLAG_FUA, >queue_flags)) { if (cmd->se_cmd_flags & SCF_FUA) op_flags = WRITE_FUA; else if (!test_bit(QUEUE_FLAG_WC, >queue_flags)) op_flags = WRITE_FUA; } Indeed, you are correct. Reviewed-by: Hannes Reinecke Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage h...@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 28/45] target: use bio op accessors
On 06/06/2016 01:46 AM, Hannes Reinecke wrote: > On 06/05/2016 09:32 PM, mchri...@redhat.com wrote: >> From: Mike Christie>> >> 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 >> --- >> drivers/target/target_core_iblock.c | 29 ++--- >> drivers/target/target_core_pscsi.c | 2 +- >> 2 files changed, 15 insertions(+), 16 deletions(-) >> >> diff --git a/drivers/target/target_core_iblock.c >> b/drivers/target/target_core_iblock.c >> index c25109c..22af12f 100644 >> --- a/drivers/target/target_core_iblock.c >> +++ b/drivers/target/target_core_iblock.c > [ .. ] >> @@ -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, >queue_flags)) { >> if (cmd->se_cmd_flags & SCF_FUA) >> -rw = WRITE_FUA; >> +op_flags = WRITE_FUA; >> else if (!test_bit(QUEUE_FLAG_WC, >queue_flags)) >> -rw = WRITE_FUA; >> -else >> -rw = WRITE; >> -} else { >> -rw = WRITE; >> +op_flags = WRITE_FUA; >> } > Wrong intendation. It should be ok. That line is for the QUEUE_FLAG_WC test. We end up with: op = REQ_OP_WRITE; if (test_bit(QUEUE_FLAG_FUA, >queue_flags)) { if (cmd->se_cmd_flags & SCF_FUA) op_flags = WRITE_FUA; else if (!test_bit(QUEUE_FLAG_WC, >queue_flags)) op_flags = WRITE_FUA; } -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 28/45] target: use bio op accessors
On 06/05/2016 09:32 PM, mchri...@redhat.com wrote: > From: Mike Christie> > 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 > --- > drivers/target/target_core_iblock.c | 29 ++--- > drivers/target/target_core_pscsi.c | 2 +- > 2 files changed, 15 insertions(+), 16 deletions(-) > > diff --git a/drivers/target/target_core_iblock.c > b/drivers/target/target_core_iblock.c > index c25109c..22af12f 100644 > --- a/drivers/target/target_core_iblock.c > +++ b/drivers/target/target_core_iblock.c [ .. ] > @@ -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, >queue_flags)) { > if (cmd->se_cmd_flags & SCF_FUA) > - rw = WRITE_FUA; > + op_flags = WRITE_FUA; > else if (!test_bit(QUEUE_FLAG_WC, >queue_flags)) > - rw = WRITE_FUA; > - else > - rw = WRITE; > - } else { > - rw = WRITE; > + op_flags = WRITE_FUA; > } Wrong intendation. > } 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; > > diff --git a/drivers/target/target_core_pscsi.c > b/drivers/target/target_core_pscsi.c > index de18790..81564c8 100644 > --- a/drivers/target/target_core_pscsi.c > +++ b/drivers/target/target_core_pscsi.c > @@ -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, > Cheers, Hannes -- Dr. Hannes ReineckeTeamlead Storage & Networking h...@suse.de +49 911 74053 688 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 28/45] target: use bio op accessors
From: Mike ChristieSeparate 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 --- drivers/target/target_core_iblock.c | 29 ++--- drivers/target/target_core_pscsi.c | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index c25109c..22af12f 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -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 = _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, >queue_flags)) { if (cmd->se_cmd_flags & SCF_FUA) - rw = WRITE_FUA; + op_flags = WRITE_FUA; else if (!test_bit(QUEUE_FLAG_WC, >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; diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c index de18790..81564c8 100644 --- a/drivers/target/target_core_pscsi.c +++ b/drivers/target/target_core_pscsi.c @@ -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, -- 2.7.2 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More