Hannes, >Add a sysfs queue attribute 'zoned' to display the zone layout >for zoned devices. > >Signed-off-by: Hannes Reinecke <hare@xxxxxxx> >--- > block/blk-sysfs.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > >diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c >index ff97091..748bb27 100644 >--- a/block/blk-sysfs.c >+++ b/block/blk-sysfs.c >@@ -244,6 +244,43 @@ static ssize_t queue_max_hw_sectors_show(struct request_queue *q, char *page) > return queue_var_show(max_hw_sectors_kb, (page)); > } > >+#ifdef CONFIG_BLK_DEV_ZONED >+static ssize_t queue_zoned_show(struct request_queue *q, char *page) >+{ >+ struct rb_node *node; >+ struct blk_zone *zone; >+ ssize_t offset = 0, end = 0; >+ size_t size = 0, num = 0; >+ enum blk_zone_type type = BLK_ZONE_TYPE_UNKNOWN; >+ >+ for (node = rb_first(&q->zones); node; node = rb_next(node)) { >+ zone = rb_entry(node, struct blk_zone, node); >+ if (zone->type != type || >+ zone->len != size || >+ end != zone->start) { >+ if (size != 0) >+ offset += sprintf(page + offset, "%zu\n", num); >+ /* We can only store one page ... */ >+ if (offset + 42 > PAGE_SIZE) { >+ offset += sprintf(page + offset, "...\n"); >+ return offset; >+ } >+ size = zone->len; >+ type = zone->type; >+ offset += sprintf(page + offset, "%zu %zu %d ", >+ zone->start, size, type); >+ num = 0; >+ end = zone->start + size; >+ } else >+ end += zone->len; >+ num++; >+ } >+ if (num > 0) >+ offset += sprintf(page + offset, "%zu\n", num); >+ return offset > 0 ? offset : -EINVAL; >+} >+#endif With this, an application reading the “zoned” file for a non-SMR disk will get a -EINVAL error. Not really super nice. Could we just have the zoned files contain a single “0” for non-SMR disks ? Or at least have the file empty and read return 0 Bytes. That would allow applications to easily and cleanly detect if they are dealing with a SMR disk (or not) instead of assuming that “-EINVAL” means “not SMR”, which seems very ugly to me. Best. -- Damien Le Moal, Ph.D. Sr Manager, System Software Group, WW Research, HGST, a Western Digital company Damien.LeMoal@xxxxxxxx Tel: (+81) 0466-98-3593 (Ext. 51-3593) 1 kirihara-cho, Fujisawa, Kanagawa, 252-0888 Japan www.hgst.com <http://www.hgst.com> Western Digital Corporation (and its subsidiaries) E-mail Confidentiality Notice & Disclaimer: This e-mail and any files transmitted with it may contain confidential or legally privileged information of WDC and/or its affiliates, and are intended solely for the use of the individual or entity to which they are addressed. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is prohibited. If you have received this e-mail in error, please notify the sender immediately and delete the e-mail in its entirety from your system. ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f