dm-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>
Cc: linux-block@vger.kernel.org, dm-devel@redhat.com,
	linux-scsi@vger.kernel.org, linux-nvme@lists.infradead.org
Subject: [dm-devel] [PATCH 13/17] block: replace blkdev_nr_zones with bdev_nr_zones
Date: Mon,  4 Jul 2022 14:44:56 +0200	[thread overview]
Message-ID: <20220704124500.155247-14-hch@lst.de> (raw)
In-Reply-To: <20220704124500.155247-1-hch@lst.de>

Pass a block_device instead of a request_queue a that is what most
callers have at hand.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 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      |  4 ++--
 fs/zonefs/super.c              | 17 ++++++++---------
 include/linux/blkdev.h         |  4 ++--
 8 files changed, 25 insertions(+), 26 deletions(-)

diff --git a/block/blk-zoned.c b/block/blk-zoned.c
index 9085f9fb3ab42..836b96ebfdc04 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 (!blk_queue_is_zoned(bdev_get_queue(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 c6f0a775efdee..c9b2ce06ca93e 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)));
 }
 
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 e32c147f72868..183aa83143fd2 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);
@@ -314,7 +314,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;
 }
-- 
2.30.2

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel


  parent reply	other threads:[~2022-07-04 17:22 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-04 12:44 [dm-devel] clean up zoned device information Christoph Hellwig
2022-07-04 12:44 ` [dm-devel] [PATCH 01/17] block: remove a superflous ifdef in blkdev.h Christoph Hellwig
2022-07-04 12:58   ` Johannes Thumshirn
2022-07-04 13:01     ` Christoph Hellwig
2022-07-04 13:04       ` Johannes Thumshirn
2022-07-05  2:26   ` Damien Le Moal
2022-07-05  6:22   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 02/17] block: call blk_queue_free_zone_bitmaps from disk_release Christoph Hellwig
2022-07-04 13:01   ` Johannes Thumshirn
2022-07-05  2:27   ` Damien Le Moal
2022-07-05  6:23   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 03/17] block: use bdev_is_zoned instead of open coding it Christoph Hellwig
2022-07-04 13:13   ` Johannes Thumshirn
2022-07-05  2:28   ` Damien Le Moal
2022-07-05  6:45   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 04/17] block: simplify blk_mq_plug Christoph Hellwig
2022-07-04 13:14   ` Johannes Thumshirn
2022-07-05  2:30   ` Damien Le Moal
2022-07-05  6:25   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 05/17] block: export blkdev_zone_mgmt_all Christoph Hellwig
2022-07-04 13:17   ` Johannes Thumshirn
2022-07-05  2:31   ` Damien Le Moal
2022-07-05  2:39     ` Damien Le Moal
2022-07-05  6:25   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 06/17] nvmet: use blkdev_zone_mgmt_all Christoph Hellwig
2022-07-04 13:18   ` Johannes Thumshirn
2022-07-04 12:44 ` [dm-devel] [PATCH 07/17] block: simplify blk_check_zone_append Christoph Hellwig
2022-07-04 13:21   ` Johannes Thumshirn
2022-07-05  2:40   ` Damien Le Moal
2022-07-05  6:27   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 08/17] block: pass a gendisk to blk_queue_set_zoned Christoph Hellwig
2022-07-04 13:22   ` Johannes Thumshirn
2022-07-05  2:41   ` Damien Le Moal
2022-07-05  6:28   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 09/17] block: pass a gendisk to blk_queue_clear_zone_settings Christoph Hellwig
2022-07-04 13:23   ` Johannes Thumshirn
2022-07-05  2:41   ` Damien Le Moal
2022-07-05  6:29   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 10/17] block: pass a gendisk to blk_queue_free_zone_bitmaps Christoph Hellwig
2022-07-04 13:23   ` Johannes Thumshirn
2022-07-05  2:42   ` Damien Le Moal
2022-07-05  6:40   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 11/17] block: remove queue_max_open_zones and queue_max_active_zones Christoph Hellwig
2022-07-04 13:23   ` Johannes Thumshirn
2022-07-05  2:43   ` Damien Le Moal
2022-07-05  6:41   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 12/17] block: pass a gendisk to blk_queue_max_open_zones and blk_queue_max_active_zones Christoph Hellwig
2022-07-04 13:24   ` Johannes Thumshirn
2022-07-05  2:50   ` Damien Le Moal
2022-07-05  6:41   ` Chaitanya Kulkarni
2022-07-04 12:44 ` Christoph Hellwig [this message]
2022-07-04 13:27   ` [dm-devel] [PATCH 13/17] block: replace blkdev_nr_zones with bdev_nr_zones Johannes Thumshirn
2022-07-05  2:53   ` Damien Le Moal
2022-07-05  6:42   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 14/17] block: use bdev based helpers in blkdev_zone_mgmt / blkdev_zone_mgmt_all Christoph Hellwig
2022-07-04 13:27   ` Johannes Thumshirn
2022-07-05  2:54   ` Damien Le Moal
2022-07-05  6:43   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 15/17] dm-zoned: cleanup dmz_fixup_devices Christoph Hellwig
2022-07-04 13:28   ` Johannes Thumshirn
2022-07-05  2:54   ` Damien Le Moal
2022-07-05  6:43   ` Chaitanya Kulkarni
2022-07-04 12:44 ` [dm-devel] [PATCH 16/17] block: remove blk_queue_zone_sectors Christoph Hellwig
2022-07-04 13:29   ` Johannes Thumshirn
2022-07-05  2:55   ` Damien Le Moal
2022-07-05  6:44   ` Chaitanya Kulkarni
2022-07-04 12:45 ` [dm-devel] [PATCH 17/17] block: move zone related fields to struct gendisk Christoph Hellwig
2022-07-04 13:31   ` Johannes Thumshirn
2022-07-05  2:59   ` Damien Le Moal
2022-07-05  6:44   ` Chaitanya Kulkarni

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=20220704124500.155247-14-hch@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=dm-devel@redhat.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;
as well as URLs for NNTP newsgroup(s).