From: Damien Le Moal <damien.lemoal@wdc.com> To: linux-block@vger.kernel.org, Jens Axboe <axboe@kernel.dk>, linux-scsi@vger.kernel.org, "Martin K . Petersen" <martin.petersen@oracle.com>, dm-devel@redhat.com, Mike Snitzer <snitzer@redhat.com> Cc: Ajay Joshi <ajay.joshi@wdc.com>, Matias Bjorling <matias.bjorling@wdc.com>, Hans Holmberg <Hans.Holmberg@wdc.com>, Dmitry Fomichev <dmitry.fomichev@wdc.com>, Keith Busch <kbusch@kernel.org> Subject: [PATCH 2/8] block: Simplify REQ_OP_ZONE_RESET_ALL handling Date: Sun, 27 Oct 2019 23:05:43 +0900 [thread overview] Message-ID: <20191027140549.26272-3-damien.lemoal@wdc.com> (raw) In-Reply-To: <20191027140549.26272-1-damien.lemoal@wdc.com> There is no need for the function __blkdev_reset_all_zones() as REQ_OP_ZONE_RESET_ALL can be handled directly in blkdev_reset_zones() bio loop with an early break from the loop. This patch removes this function and modifies blkdev_reset_zones(), simplifying the code. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> --- block/blk-zoned.c | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 7fe376eede86..14785011e798 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -202,32 +202,14 @@ int blkdev_report_zones(struct block_device *bdev, sector_t sector, } EXPORT_SYMBOL_GPL(blkdev_report_zones); -/* - * Special case of zone reset operation to reset all zones in one command, - * useful for applications like mkfs. - */ -static int __blkdev_reset_all_zones(struct block_device *bdev, gfp_t gfp_mask) -{ - struct bio *bio = bio_alloc(gfp_mask, 0); - int ret; - - /* across the zones operations, don't need any sectors */ - bio_set_dev(bio, bdev); - bio_set_op_attrs(bio, REQ_OP_ZONE_RESET_ALL, 0); - - ret = submit_bio_wait(bio); - bio_put(bio); - - return ret; -} - static inline bool blkdev_allow_reset_all_zones(struct block_device *bdev, + sector_t sector, sector_t nr_sectors) { if (!blk_queue_zone_resetall(bdev_get_queue(bdev))) return false; - if (nr_sectors != part_nr_sects_read(bdev->bd_part)) + if (sector || nr_sectors != part_nr_sects_read(bdev->bd_part)) return false; /* * REQ_OP_ZONE_RESET_ALL can be executed only if the block device is @@ -270,9 +252,6 @@ int blkdev_reset_zones(struct block_device *bdev, /* Out of range */ return -EINVAL; - if (blkdev_allow_reset_all_zones(bdev, nr_sectors)) - return __blkdev_reset_all_zones(bdev, gfp_mask); - /* Check alignment (handle eventual smaller last zone) */ zone_sectors = blk_queue_zone_sectors(q); if (sector & (zone_sectors - 1)) @@ -283,17 +262,24 @@ int blkdev_reset_zones(struct block_device *bdev, return -EINVAL; while (sector < end_sector) { - bio = blk_next_bio(bio, 0, gfp_mask); - bio->bi_iter.bi_sector = sector; bio_set_dev(bio, bdev); - bio_set_op_attrs(bio, REQ_OP_ZONE_RESET, 0); + /* + * Special case for the zone reset operation that reset all + * zones, this is useful for applications like mkfs. + */ + if (blkdev_allow_reset_all_zones(bdev, sector, nr_sectors)) { + bio->bi_opf = REQ_OP_ZONE_RESET_ALL; + break; + } + + bio->bi_opf = REQ_OP_ZONE_RESET; + bio->bi_iter.bi_sector = sector; sector += zone_sectors; /* This may take a while, so be nice to others */ cond_resched(); - } ret = submit_bio_wait(bio); -- 2.21.0
WARNING: multiple messages have this Message-ID (diff)
From: Damien Le Moal <damien.lemoal@wdc.com> To: linux-block@vger.kernel.org, Jens Axboe <axboe@kernel.dk>, linux-scsi@vger.kernel.org, "Martin K . Petersen" <martin.petersen@oracle.com>, dm-devel@redhat.com, Mike Snitzer <snitzer@redhat.com> Cc: Dmitry Fomichev <dmitry.fomichev@wdc.com>, Keith Busch <kbusch@kernel.org>, Hans Holmberg <Hans.Holmberg@wdc.com>, Ajay Joshi <ajay.joshi@wdc.com>, Matias Bjorling <matias.bjorling@wdc.com> Subject: [PATCH 2/8] block: Simplify REQ_OP_ZONE_RESET_ALL handling Date: Sun, 27 Oct 2019 23:05:43 +0900 [thread overview] Message-ID: <20191027140549.26272-3-damien.lemoal@wdc.com> (raw) In-Reply-To: <20191027140549.26272-1-damien.lemoal@wdc.com> There is no need for the function __blkdev_reset_all_zones() as REQ_OP_ZONE_RESET_ALL can be handled directly in blkdev_reset_zones() bio loop with an early break from the loop. This patch removes this function and modifies blkdev_reset_zones(), simplifying the code. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> --- block/blk-zoned.c | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/block/blk-zoned.c b/block/blk-zoned.c index 7fe376eede86..14785011e798 100644 --- a/block/blk-zoned.c +++ b/block/blk-zoned.c @@ -202,32 +202,14 @@ int blkdev_report_zones(struct block_device *bdev, sector_t sector, } EXPORT_SYMBOL_GPL(blkdev_report_zones); -/* - * Special case of zone reset operation to reset all zones in one command, - * useful for applications like mkfs. - */ -static int __blkdev_reset_all_zones(struct block_device *bdev, gfp_t gfp_mask) -{ - struct bio *bio = bio_alloc(gfp_mask, 0); - int ret; - - /* across the zones operations, don't need any sectors */ - bio_set_dev(bio, bdev); - bio_set_op_attrs(bio, REQ_OP_ZONE_RESET_ALL, 0); - - ret = submit_bio_wait(bio); - bio_put(bio); - - return ret; -} - static inline bool blkdev_allow_reset_all_zones(struct block_device *bdev, + sector_t sector, sector_t nr_sectors) { if (!blk_queue_zone_resetall(bdev_get_queue(bdev))) return false; - if (nr_sectors != part_nr_sects_read(bdev->bd_part)) + if (sector || nr_sectors != part_nr_sects_read(bdev->bd_part)) return false; /* * REQ_OP_ZONE_RESET_ALL can be executed only if the block device is @@ -270,9 +252,6 @@ int blkdev_reset_zones(struct block_device *bdev, /* Out of range */ return -EINVAL; - if (blkdev_allow_reset_all_zones(bdev, nr_sectors)) - return __blkdev_reset_all_zones(bdev, gfp_mask); - /* Check alignment (handle eventual smaller last zone) */ zone_sectors = blk_queue_zone_sectors(q); if (sector & (zone_sectors - 1)) @@ -283,17 +262,24 @@ int blkdev_reset_zones(struct block_device *bdev, return -EINVAL; while (sector < end_sector) { - bio = blk_next_bio(bio, 0, gfp_mask); - bio->bi_iter.bi_sector = sector; bio_set_dev(bio, bdev); - bio_set_op_attrs(bio, REQ_OP_ZONE_RESET, 0); + /* + * Special case for the zone reset operation that reset all + * zones, this is useful for applications like mkfs. + */ + if (blkdev_allow_reset_all_zones(bdev, sector, nr_sectors)) { + bio->bi_opf = REQ_OP_ZONE_RESET_ALL; + break; + } + + bio->bi_opf = REQ_OP_ZONE_RESET; + bio->bi_iter.bi_sector = sector; sector += zone_sectors; /* This may take a while, so be nice to others */ cond_resched(); - } ret = submit_bio_wait(bio); -- 2.21.0
next prev parent reply other threads:[~2019-10-27 14:05 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-27 14:05 [PATCH 0/8] Zone management commands support Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-10-27 14:05 ` [PATCH 1/8] block: Remove REQ_OP_ZONE_RESET plugging Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-10-28 7:50 ` Chaitanya Kulkarni 2019-10-28 7:50 ` Chaitanya Kulkarni 2019-10-29 12:13 ` Javier González 2019-10-29 12:13 ` Javier González 2019-11-07 9:50 ` Christoph Hellwig 2019-11-07 9:50 ` Christoph Hellwig 2019-10-27 14:05 ` Damien Le Moal [this message] 2019-10-27 14:05 ` [PATCH 2/8] block: Simplify REQ_OP_ZONE_RESET_ALL handling Damien Le Moal 2019-10-28 7:49 ` Chaitanya Kulkarni 2019-10-28 7:49 ` Chaitanya Kulkarni 2019-10-28 7:54 ` Damien Le Moal 2019-10-28 7:54 ` Damien Le Moal 2019-10-28 8:37 ` Chaitanya Kulkarni 2019-10-28 8:37 ` Chaitanya Kulkarni 2019-11-07 9:51 ` Christoph Hellwig 2019-11-07 9:51 ` Christoph Hellwig 2019-10-27 14:05 ` [PATCH 3/8] scsi: sd_zbc: Fix sd_zbc_complete() Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-11-02 0:42 ` Martin K. Petersen 2019-11-02 0:42 ` Martin K. Petersen 2019-10-27 14:05 ` [PATCH 4/8] block: add zone open, close and finish operations Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-10-29 12:23 ` Javier González 2019-10-29 12:23 ` Javier González 2019-11-07 9:52 ` Christoph Hellwig 2019-11-07 9:52 ` Christoph Hellwig 2019-10-27 14:05 ` [PATCH 5/8] block: add zone open, close and finish ioctl support Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-10-29 12:23 ` Javier González 2019-10-29 12:23 ` Javier González 2019-11-07 9:52 ` Christoph Hellwig 2019-11-07 9:52 ` Christoph Hellwig 2019-10-27 14:05 ` [PATCH 6/8] scsi: sd_zbc: add zone open, close, and finish support Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-11-02 0:43 ` Martin K. Petersen 2019-11-02 0:43 ` Martin K. Petersen 2019-11-07 9:53 ` Christoph Hellwig 2019-11-07 9:53 ` Christoph Hellwig 2019-10-27 14:05 ` [PATCH 7/8] dm: add zone open, close " Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-11-05 16:34 ` Mike Snitzer 2019-11-05 16:34 ` Mike Snitzer 2019-11-07 9:53 ` Christoph Hellwig 2019-11-07 9:53 ` Christoph Hellwig 2019-10-27 14:05 ` [PATCH 8/8] null_blk: add zone open, close, " Damien Le Moal 2019-10-27 14:05 ` Damien Le Moal 2019-11-07 9:54 ` Christoph Hellwig 2019-11-07 9:54 ` Christoph Hellwig 2019-11-02 3:01 ` [PATCH 0/8] Zone management commands support Jens Axboe 2019-11-02 3:01 ` Jens Axboe 2019-11-03 23:41 ` Damien Le Moal 2019-11-03 23:41 ` Damien Le Moal 2019-11-05 4:51 ` Martin K. Petersen 2019-11-05 4:51 ` Martin K. Petersen 2019-11-05 5:08 ` Damien Le Moal 2019-11-05 5:08 ` Damien Le Moal 2019-11-07 13:40 ` Jens Axboe 2019-11-07 13:40 ` Jens Axboe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191027140549.26272-3-damien.lemoal@wdc.com \ --to=damien.lemoal@wdc.com \ --cc=Hans.Holmberg@wdc.com \ --cc=ajay.joshi@wdc.com \ --cc=axboe@kernel.dk \ --cc=dm-devel@redhat.com \ --cc=dmitry.fomichev@wdc.com \ --cc=kbusch@kernel.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=matias.bjorling@wdc.com \ --cc=snitzer@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.