From: Damien Le Moal <damien.lemoal@opensource.wdc.com>
To: Christoph Hellwig <hch@lst.de>, Jens Axboe <axboe@kernel.dk>
Cc: dm-devel@redhat.com, linux-block@vger.kernel.org,
linux-nvme@lists.infradead.org, linux-scsi@vger.kernel.org,
Chaitanya Kulkarni <kch@nvidia.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>
Subject: Re: [PATCH 11/16] block: replace blkdev_nr_zones with bdev_nr_zones
Date: Wed, 6 Jul 2022 20:59:18 +0900 [thread overview]
Message-ID: <e5737383-3b85-e50b-166f-296ef821a47a@opensource.wdc.com> (raw)
In-Reply-To: <20220706070350.1703384-12-hch@lst.de>
On 7/6/22 16:03, Christoph Hellwig wrote:
> Pass a block_device instead of a request_queue as that is what most
> callers have at hand.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
And for the zonefs bits:
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> ---
> block/blk-zoned.c | 15 ++++++++-------
> block/ioctl.c | 2 +-
> drivers/block/null_blk/zoned.c | 2 +-
> drivers/md/dm-zone.c | 2 +-
> drivers/md/dm-zoned-target.c | 5 ++---
> drivers/nvme/target/zns.c | 6 +++---
> fs/zonefs/super.c | 17 ++++++++---------
> include/linux/blkdev.h | 4 ++--
> 8 files changed, 26 insertions(+), 27 deletions(-)
>
> diff --git a/block/blk-zoned.c b/block/blk-zoned.c
> index 0d431394cf90c..2dec25d8aa3bd 100644
> --- a/block/blk-zoned.c
> +++ b/block/blk-zoned.c
> @@ -108,21 +108,22 @@ void __blk_req_zone_write_unlock(struct request *rq)
> EXPORT_SYMBOL_GPL(__blk_req_zone_write_unlock);
>
> /**
> - * blkdev_nr_zones - Get number of zones
> - * @disk: Target gendisk
> + * bdev_nr_zones - Get number of zones
> + * @bdev: Target device
> *
> * Return the total number of zones of a zoned block device. For a block
> * device without zone capabilities, the number of zones is always 0.
> */
> -unsigned int blkdev_nr_zones(struct gendisk *disk)
> +unsigned int bdev_nr_zones(struct block_device *bdev)
> {
> - sector_t zone_sectors = blk_queue_zone_sectors(disk->queue);
> + sector_t zone_sectors = bdev_zone_sectors(bdev);
>
> - if (!blk_queue_is_zoned(disk->queue))
> + if (!bdev_is_zoned(bdev))
> return 0;
> - return (get_capacity(disk) + zone_sectors - 1) >> ilog2(zone_sectors);
> + return (bdev_nr_sectors(bdev) + zone_sectors - 1) >>
> + ilog2(zone_sectors);
> }
> -EXPORT_SYMBOL_GPL(blkdev_nr_zones);
> +EXPORT_SYMBOL_GPL(bdev_nr_zones);
>
> /**
> * blkdev_report_zones - Get zones information
> diff --git a/block/ioctl.c b/block/ioctl.c
> index 46949f1b0dba5..60121e89052bc 100644
> --- a/block/ioctl.c
> +++ b/block/ioctl.c
> @@ -495,7 +495,7 @@ static int blkdev_common_ioctl(struct block_device *bdev, fmode_t mode,
> case BLKGETZONESZ:
> return put_uint(argp, bdev_zone_sectors(bdev));
> case BLKGETNRZONES:
> - return put_uint(argp, blkdev_nr_zones(bdev->bd_disk));
> + return put_uint(argp, bdev_nr_zones(bdev));
> case BLKROGET:
> return put_int(argp, bdev_read_only(bdev) != 0);
> case BLKSSZGET: /* get block device logical block size */
> diff --git a/drivers/block/null_blk/zoned.c b/drivers/block/null_blk/zoned.c
> index 576ab3ed082a5..e62c52e964259 100644
> --- a/drivers/block/null_blk/zoned.c
> +++ b/drivers/block/null_blk/zoned.c
> @@ -170,7 +170,7 @@ int null_register_zoned_dev(struct nullb *nullb)
> return ret;
> } else {
> blk_queue_chunk_sectors(q, dev->zone_size_sects);
> - q->nr_zones = blkdev_nr_zones(nullb->disk);
> + q->nr_zones = bdev_nr_zones(nullb->disk->part0);
> }
>
> blk_queue_max_zone_append_sectors(q, dev->zone_size_sects);
> diff --git a/drivers/md/dm-zone.c b/drivers/md/dm-zone.c
> index ae616b87c91ae..6d105abe12415 100644
> --- a/drivers/md/dm-zone.c
> +++ b/drivers/md/dm-zone.c
> @@ -301,7 +301,7 @@ int dm_set_zones_restrictions(struct dm_table *t, struct request_queue *q)
> * correct value to be exposed in sysfs queue/nr_zones.
> */
> WARN_ON_ONCE(queue_is_mq(q));
> - q->nr_zones = blkdev_nr_zones(md->disk);
> + q->nr_zones = bdev_nr_zones(md->disk->part0);
>
> /* Check if zone append is natively supported */
> if (dm_table_supports_zone_append(t)) {
> diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c
> index 0ec5d8b9b1a4e..6ba6ef44b00e2 100644
> --- a/drivers/md/dm-zoned-target.c
> +++ b/drivers/md/dm-zoned-target.c
> @@ -793,8 +793,7 @@ static int dmz_fixup_devices(struct dm_target *ti)
> }
> zone_nr_sectors = blk_queue_zone_sectors(q);
> zoned_dev->zone_nr_sectors = zone_nr_sectors;
> - zoned_dev->nr_zones =
> - blkdev_nr_zones(zoned_dev->bdev->bd_disk);
> + zoned_dev->nr_zones = bdev_nr_zones(zoned_dev->bdev);
> }
> } else {
> reg_dev = NULL;
> @@ -805,7 +804,7 @@ static int dmz_fixup_devices(struct dm_target *ti)
> }
> q = bdev_get_queue(zoned_dev->bdev);
> zoned_dev->zone_nr_sectors = blk_queue_zone_sectors(q);
> - zoned_dev->nr_zones = blkdev_nr_zones(zoned_dev->bdev->bd_disk);
> + zoned_dev->nr_zones = bdev_nr_zones(zoned_dev->bdev);
> }
>
> if (reg_dev) {
> diff --git a/drivers/nvme/target/zns.c b/drivers/nvme/target/zns.c
> index 82b61acf7a72b..c4c99b832daf2 100644
> --- a/drivers/nvme/target/zns.c
> +++ b/drivers/nvme/target/zns.c
> @@ -60,7 +60,7 @@ bool nvmet_bdev_zns_enable(struct nvmet_ns *ns)
> if (ns->bdev->bd_disk->queue->conv_zones_bitmap)
> return false;
>
> - ret = blkdev_report_zones(ns->bdev, 0, blkdev_nr_zones(bd_disk),
> + ret = blkdev_report_zones(ns->bdev, 0, bdev_nr_zones(ns->bdev),
> validate_conv_zones_cb, NULL);
> if (ret < 0)
> return false;
> @@ -241,7 +241,7 @@ static unsigned long nvmet_req_nr_zones_from_slba(struct nvmet_req *req)
> {
> unsigned int sect = nvmet_lba_to_sect(req->ns, req->cmd->zmr.slba);
>
> - return blkdev_nr_zones(req->ns->bdev->bd_disk) -
> + return bdev_nr_zones(req->ns->bdev) -
> (sect >> ilog2(bdev_zone_sectors(req->ns->bdev)));
> }
>
> @@ -386,7 +386,7 @@ static int zmgmt_send_scan_cb(struct blk_zone *z, unsigned i, void *d)
> static u16 nvmet_bdev_zone_mgmt_emulate_all(struct nvmet_req *req)
> {
> struct block_device *bdev = req->ns->bdev;
> - unsigned int nr_zones = blkdev_nr_zones(bdev->bd_disk);
> + unsigned int nr_zones = bdev_nr_zones(bdev);
> struct request_queue *q = bdev_get_queue(bdev);
> struct bio *bio = NULL;
> sector_t sector = 0;
> diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
> index 053299758deb9..9c0eef1ff32a0 100644
> --- a/fs/zonefs/super.c
> +++ b/fs/zonefs/super.c
> @@ -1394,7 +1394,7 @@ static void zonefs_init_dir_inode(struct inode *parent, struct inode *inode,
> {
> struct super_block *sb = parent->i_sb;
>
> - inode->i_ino = blkdev_nr_zones(sb->s_bdev->bd_disk) + type + 1;
> + inode->i_ino = bdev_nr_zones(sb->s_bdev) + type + 1;
> inode_init_owner(&init_user_ns, inode, parent, S_IFDIR | 0555);
> inode->i_op = &zonefs_dir_inode_operations;
> inode->i_fop = &simple_dir_operations;
> @@ -1540,7 +1540,7 @@ static int zonefs_create_zgroup(struct zonefs_zone_data *zd,
> /*
> * The first zone contains the super block: skip it.
> */
> - end = zd->zones + blkdev_nr_zones(sb->s_bdev->bd_disk);
> + end = zd->zones + bdev_nr_zones(sb->s_bdev);
> for (zone = &zd->zones[1]; zone < end; zone = next) {
>
> next = zone + 1;
> @@ -1635,8 +1635,8 @@ static int zonefs_get_zone_info(struct zonefs_zone_data *zd)
> struct block_device *bdev = zd->sb->s_bdev;
> int ret;
>
> - zd->zones = kvcalloc(blkdev_nr_zones(bdev->bd_disk),
> - sizeof(struct blk_zone), GFP_KERNEL);
> + zd->zones = kvcalloc(bdev_nr_zones(bdev), sizeof(struct blk_zone),
> + GFP_KERNEL);
> if (!zd->zones)
> return -ENOMEM;
>
> @@ -1648,9 +1648,9 @@ static int zonefs_get_zone_info(struct zonefs_zone_data *zd)
> return ret;
> }
>
> - if (ret != blkdev_nr_zones(bdev->bd_disk)) {
> + if (ret != bdev_nr_zones(bdev)) {
> zonefs_err(zd->sb, "Invalid zone report (%d/%u zones)\n",
> - ret, blkdev_nr_zones(bdev->bd_disk));
> + ret, bdev_nr_zones(bdev));
> return -EIO;
> }
>
> @@ -1816,8 +1816,7 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent)
> if (ret)
> goto cleanup;
>
> - zonefs_info(sb, "Mounting %u zones",
> - blkdev_nr_zones(sb->s_bdev->bd_disk));
> + zonefs_info(sb, "Mounting %u zones", bdev_nr_zones(sb->s_bdev));
>
> if (!sbi->s_max_wro_seq_files &&
> !sbi->s_max_active_seq_files &&
> @@ -1833,7 +1832,7 @@ static int zonefs_fill_super(struct super_block *sb, void *data, int silent)
> if (!inode)
> goto cleanup;
>
> - inode->i_ino = blkdev_nr_zones(sb->s_bdev->bd_disk);
> + inode->i_ino = bdev_nr_zones(sb->s_bdev);
> inode->i_mode = S_IFDIR | 0555;
> inode->i_ctime = inode->i_mtime = inode->i_atime = current_time(inode);
> inode->i_op = &zonefs_dir_inode_operations;
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index c05e1cc05c265..fa2757ef4a846 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -298,7 +298,7 @@ void disk_set_zoned(struct gendisk *disk, enum blk_zoned_model model);
> #define BLK_ALL_ZONES ((unsigned int)-1)
> int blkdev_report_zones(struct block_device *bdev, sector_t sector,
> unsigned int nr_zones, report_zones_cb cb, void *data);
> -unsigned int blkdev_nr_zones(struct gendisk *disk);
> +unsigned int bdev_nr_zones(struct block_device *bdev);
> extern int blkdev_zone_mgmt(struct block_device *bdev, enum req_opf op,
> sector_t sectors, sector_t nr_sectors,
> gfp_t gfp_mask);
> @@ -312,7 +312,7 @@ extern int blkdev_zone_mgmt_ioctl(struct block_device *bdev, fmode_t mode,
>
> #else /* CONFIG_BLK_DEV_ZONED */
>
> -static inline unsigned int blkdev_nr_zones(struct gendisk *disk)
> +static inline unsigned int bdev_nr_zones(struct block_device *bdev)
> {
> return 0;
> }
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2022-07-06 11:59 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-06 7:03 clean up zoned device information v2 Christoph Hellwig
2022-07-06 7:03 ` [PATCH 01/16] block: remove a superflous ifdef in blkdev.h Christoph Hellwig
2022-07-06 7:03 ` [PATCH 02/16] block: call blk_queue_free_zone_bitmaps from disk_release Christoph Hellwig
2022-07-06 7:03 ` [PATCH 03/16] block: use bdev_is_zoned instead of open coding it Christoph Hellwig
2022-07-06 7:03 ` [PATCH 04/16] block: simplify blk_mq_plug Christoph Hellwig
2022-07-06 7:03 ` [PATCH 05/16] block: simplify blk_check_zone_append Christoph Hellwig
2022-07-06 7:03 ` [PATCH 06/16] block: pass a gendisk to blk_queue_set_zoned Christoph Hellwig
2022-07-06 7:03 ` [PATCH 07/16] block: pass a gendisk to blk_queue_clear_zone_settings Christoph Hellwig
2022-07-06 7:03 ` [PATCH 08/16] block: pass a gendisk to blk_queue_free_zone_bitmaps Christoph Hellwig
2022-07-06 7:03 ` [PATCH 09/16] block: remove queue_max_open_zones and queue_max_active_zones Christoph Hellwig
2022-07-06 7:03 ` [PATCH 10/16] block: pass a gendisk to blk_queue_max_open_zones and blk_queue_max_active_zones Christoph Hellwig
2022-07-06 7:03 ` [PATCH 11/16] block: replace blkdev_nr_zones with bdev_nr_zones Christoph Hellwig
2022-07-06 11:59 ` Damien Le Moal [this message]
2022-07-06 7:03 ` [PATCH 12/16] block: use bdev based helpers in blkdev_zone_mgmt{,all} Christoph Hellwig
2022-07-06 7:03 ` [PATCH 13/16] nvmet:: use bdev based helpers in nvmet_bdev_zone_mgmt_emulate_all Christoph Hellwig
2022-07-06 11:59 ` Damien Le Moal
2022-07-06 7:03 ` [PATCH 14/16] dm-zoned: cleanup dmz_fixup_devices Christoph Hellwig
2022-07-06 7:03 ` [PATCH 15/16] block: remove blk_queue_zone_sectors Christoph Hellwig
2022-07-06 7:03 ` [PATCH 16/16] block: move zone related fields to struct gendisk Christoph Hellwig
2022-07-06 12:46 ` clean up zoned device information v2 Jens Axboe
2022-07-08 4:16 ` Shinichiro Kawasaki
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=e5737383-3b85-e50b-166f-296ef821a47a@opensource.wdc.com \
--to=damien.lemoal@opensource.wdc.com \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=hch@lst.de \
--cc=johannes.thumshirn@wdc.com \
--cc=kch@nvidia.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox