Re: [PATCH] blkzone: Fix zone condition strings handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2017-04-18 at 11:34 +0200, Karel Zak wrote:
> On Wed, Apr 12, 2017 at 06:20:32PM +0900, Damien Le Moal wrote:
> > Fixed the condition strings for implicit open and explicit open to
> > match the man page defined strings ("oi" and "oe"). Also while at it,
> > correct the condition_str array entries adding the reserved "xC" case
> > so that the read_only, full and offline conditions match the condition
> > codes. This increases the array size to 16, so also fix the condition
> > code masking when displaying the result.
> > 
> > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx>
> > ---
> >  sys-utils/blkzone.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> Applied, thanks.
> 
> Damien, what about to add ZONED column to the lsblk(8) command (also
> from util-linux)? 
> 
> It would be nice to have zone model there. All lsblk is based on /sys,
> so add the string from /sys/block/<disk>/queue/zoned should be easy
> (just add COL_ZONED with sysfs_strdup() to set_scols_data()).
> 
>  lsblk -o+ZONED
> 
> will do all the magic for end users. Can you try it? I have no way to
> test it.

Very good idea. Patch attached.
(Sorry for not being able to send that the usual way. I am having problem with
office365 account and git send-email)

Best regards.

-- 
Damien Le Moal
Western Digital
From b3768342e0ffd18d843650125be29117c280c724 Mon Sep 17 00:00:00 2001
From: Damien Le Moal <damien.lemoal@xxxxxxx>
Date: Tue, 18 Apr 2017 19:37:58 +0900
Subject: [PATCH 1/1] lsblk: add ZONED column
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add the column "ZONED" to the output to display a block device zone
model.

Example output:

> lsblk -o+ZONED
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT ZONED
sda      8:0    0 111.8G  0 disk            none
â??â??sda1   8:1    0   500M  0 part /boot      none
â??â??sda2   8:2    0  87.3G  0 part /          none
â??â??sda3   8:3    0    24G  0 part [SWAP]     none
sdb      8:16   0  12.8T  0 disk            host-managed
sdc      8:32   0   5.5T  0 disk            host-managed

or:

> lsblk --zone
NAME   ZONED
sda    none
â??â??sda1 none
â??â??sda2 none
â??â??sda3 none
sdb    host-managed
sdc    host-managed

Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx>
---
 misc-utils/lsblk.8 |  3 +++
 misc-utils/lsblk.c | 15 +++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/misc-utils/lsblk.8 b/misc-utils/lsblk.8
index ee1d873..d9fc1c0 100644
--- a/misc-utils/lsblk.8
+++ b/misc-utils/lsblk.8
@@ -49,6 +49,9 @@ Print the SIZE column in bytes rather than in a human-readable format.
 .BR \-D , " \-\-discard"
 Print information about the discarding capabilities (TRIM, UNMAP) for each device.
 .TP
+.BR \-z , " \-\-zoned"
+Print the zone model for each device.
+.TP
 .BR \-d , " \-\-nodeps"
 Do not print holder devices or slaves.  For example, \fBlsblk --nodeps /dev/sda\fR prints
 information about the sda device only.
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 4742a4d..23bfc46 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -124,7 +124,8 @@ enum {
 	COL_TRANSPORT,
 	COL_SUBSYS,
 	COL_REV,
-	COL_VENDOR
+	COL_VENDOR,
+	COL_ZONED,
 };
 
 /* basic table settings */
@@ -200,6 +201,7 @@ static struct colinfo infos[] = {
 	[COL_SUBSYS] = { "SUBSYSTEMS", 0.1, SCOLS_FL_NOEXTREMES, N_("de-duplicated chain of subsystems") },
 	[COL_REV]    = { "REV",   4, SCOLS_FL_RIGHT, N_("device revision") },
 	[COL_VENDOR] = { "VENDOR", 0.1, SCOLS_FL_TRUNC, N_("device vendor") },
+	[COL_ZONED]  = { "ZONED", 0.3, 0, N_("zone model") },
 };
 
 struct lsblk {
@@ -1148,6 +1150,9 @@ static void set_scols_data(struct blkdev_cxt *cxt, int col, int id, struct libsc
 		if (!str)
 			str = xstrdup("0");
 		break;
+	case COL_ZONED:
+		str = sysfs_strdup(&cxt->sysfs, "queue/zoned");
+		break;
 	};
 
 	if (str)
@@ -1626,6 +1631,7 @@ static void __attribute__((__noreturn__)) help(FILE *out)
 	fputs(_(" -b, --bytes          print SIZE in bytes rather than in human readable format\n"), out);
 	fputs(_(" -d, --nodeps         don't print slaves or holders\n"), out);
 	fputs(_(" -D, --discard        print discard capabilities\n"), out);
+	fputs(_(" -z, --zone           print zone model\n"), out);
 	fputs(_(" -e, --exclude <list> exclude devices by major number (default: RAM disks)\n"), out);
 	fputs(_(" -f, --fs             output info about filesystems\n"), out);
 	fputs(_(" -i, --ascii          use ascii characters only\n"), out);
@@ -1676,6 +1682,7 @@ int main(int argc, char *argv[])
 		{ "bytes",      no_argument,       NULL, 'b' },
 		{ "nodeps",     no_argument,       NULL, 'd' },
 		{ "discard",    no_argument,       NULL, 'D' },
+		{ "zoned",      no_argument,       NULL, 'z' },
 		{ "help",	no_argument,       NULL, 'h' },
 		{ "json",       no_argument,       NULL, 'J' },
 		{ "output",     required_argument, NULL, 'o' },
@@ -1721,7 +1728,7 @@ int main(int argc, char *argv[])
 	lsblk_init_debug();
 
 	while((c = getopt_long(argc, argv,
-			       "abdDe:fhJlnmo:OpPiI:rstVSx:", longopts, NULL)) != -1) {
+			       "abdDze:fhJlnmo:OpPiI:rstVSx:", longopts, NULL)) != -1) {
 
 		err_exclusive_options(c, longopts, excl, excl_st);
 
@@ -1742,6 +1749,10 @@ int main(int argc, char *argv[])
 			add_column(columns, ncolumns++, COL_DMAX);
 			add_column(columns, ncolumns++, COL_DZERO);
 			break;
+		case 'z':
+			add_column(columns, ncolumns++, COL_NAME);
+			add_column(columns, ncolumns++, COL_ZONED);
+			break;
 		case 'e':
 			parse_excludes(optarg);
 			break;
-- 
2.9.3


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux