From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Damien Le Moal To: linux-block@vger.kernel.org, Jens Axboe , linux-scsi@vger.kernel.org, "Martin K . Petersen" , dm-devel@redhat.com, Mike Snitzer Cc: Christoph Hellwig , Matias Bjorling Subject: [PATCH v2 09/11] block: Expose queue nr_zones in sysfs Date: Thu, 11 Oct 2018 16:09:50 +0900 Message-Id: <20181011070952.13248-10-damien.lemoal@wdc.com> In-Reply-To: <20181011070952.13248-1-damien.lemoal@wdc.com> References: <20181011070952.13248-1-damien.lemoal@wdc.com> List-ID: Expose through sysfs the nr_zones field of a zoned block device request queue. This represents the total number of zones of the device calculated using the known disk capacity and zone size. Exposing this value helps in debugging disk issues as well as facilitating scripts based use of the disk (e.g. blktests). Signed-off-by: Damien Le Moal --- block/blk-sysfs.c | 11 +++++++++++ include/linux/blkdev.h | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 3772671cf2bc..f7060a938bf9 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -300,6 +300,11 @@ static ssize_t queue_zoned_show(struct request_queue *q, char *page) } } +static ssize_t queue_nr_zones_show(struct request_queue *q, char *page) +{ + return queue_var_show(q->nr_zones, page); +} + static ssize_t queue_nomerges_show(struct request_queue *q, char *page) { return queue_var_show((blk_queue_nomerges(q) << 1) | @@ -637,6 +642,11 @@ static struct queue_sysfs_entry queue_zoned_entry = { .show = queue_zoned_show, }; +static struct queue_sysfs_entry queue_nr_zones_entry = { + .attr = {.name = "nr_zones", .mode = 0444 }, + .show = queue_nr_zones_show, +}; + static struct queue_sysfs_entry queue_nomerges_entry = { .attr = {.name = "nomerges", .mode = 0644 }, .show = queue_nomerges_show, @@ -727,6 +737,7 @@ static struct attribute *default_attrs[] = { &queue_write_zeroes_max_entry.attr, &queue_nonrot_entry.attr, &queue_zoned_entry.attr, + &queue_nr_zones_entry.attr, &queue_nomerges_entry.attr, &queue_rq_affinity_entry.attr, &queue_iostats_entry.attr, diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index c24969b1741b..23ab53d2d4ca 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -593,7 +593,6 @@ struct request_queue { struct queue_limits limits; -#ifdef CONFIG_BLK_DEV_ZONED /* * Zoned block device information for request dispatch control. * nr_zones is the total number of zones of the device. This is always @@ -612,6 +611,7 @@ struct request_queue { * blk_mq_unfreeze_queue(). */ unsigned int nr_zones; +#ifdef CONFIG_BLK_DEV_ZONED unsigned long *seq_zones_bitmap; unsigned long *seq_zones_wlock; #endif /* CONFIG_BLK_DEV_ZONED */ -- 2.17.1