util-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Support --nvme/--virtio and MQ
@ 2022-06-03 12:23 zhenwei pi
  2022-06-03 12:23 ` [PATCH 1/5] lsblk: add -N/--nvme zhenwei pi
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:23 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

Hi,

Originally, lsblk supports --scsi only. Also support --nvme/--virtio
to filter NVMe/virtio devices.

And introduce 'MQ' column to show multi-queues feature.

zhenwei pi (5):
  lsblk: add -N/--nvme
  lsblk: support virtio block
  lsblk: add -v/--virtio
  lsblk: introduce 'MQ' column
  lsblk: enable 'MQ' for NVMe/virtio by default

 bash-completion/lsblk   |  4 +-
 misc-utils/lsblk.8.adoc |  6 +++
 misc-utils/lsblk.c      | 84 ++++++++++++++++++++++++++++++++++++++++-
 misc-utils/lsblk.h      |  2 +
 4 files changed, 93 insertions(+), 3 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/5] lsblk: add -N/--nvme
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
@ 2022-06-03 12:23 ` zhenwei pi
  2022-06-03 12:23 ` [PATCH 2/5] lsblk: support virtio block zhenwei pi
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:23 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

Add -N/--nvme to filter NVMe device only, NVMe usually has a larger
I/O depth, also show COL_RQ_SIZE by default.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 bash-completion/lsblk   |  1 +
 misc-utils/lsblk.8.adoc |  3 +++
 misc-utils/lsblk.c      | 24 +++++++++++++++++++++++-
 misc-utils/lsblk.h      |  1 +
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/bash-completion/lsblk b/bash-completion/lsblk
index ca0ad39d7..011af41c2 100644
--- a/bash-completion/lsblk
+++ b/bash-completion/lsblk
@@ -79,6 +79,7 @@ _lsblk_module()
 				--inverse
 				--topology
 				--scsi
+				--nvme
 				--sort
 				--width
 				--help
diff --git a/misc-utils/lsblk.8.adoc b/misc-utils/lsblk.8.adoc
index 8ffc2cd79..8c6d50f79 100644
--- a/misc-utils/lsblk.8.adoc
+++ b/misc-utils/lsblk.8.adoc
@@ -72,6 +72,9 @@ Group parents of sub-trees to provide more readable output for RAIDs and Multi-p
 *-m*, *--perms*::
 Output info about device owner, group and mode. This option is equivalent to *-o NAME,SIZE,OWNER,GROUP,MODE*.
 
+*-N*, *--nvme*::
+Output info about NVMe devices only.
+
 *-n*, *--noheadings*::
 Do not print a header line.
 
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index fbaa1797f..047f744be 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -1349,6 +1349,16 @@ static int initialize_device(struct lsblk_device *dev,
 		return -1;
 	}
 
+	/* ignore non-NVMe devices */
+	if (lsblk->nvme) {
+		char *transport = get_transport(dev);
+
+		if (!transport || strcmp(transport, "nvme")) {
+			DBG(DEV, ul_debugobj(dev, "non-nvme device -- ignore"));
+			return -1;
+		}
+	}
+
 	DBG(DEV, ul_debugobj(dev, "%s: context successfully initialized", dev->name));
 	return 0;
 }
@@ -1925,6 +1935,7 @@ static void __attribute__((__noreturn__)) usage(void)
 	fputs(_(" -O, --output-all     output all columns\n"), out);
 	fputs(_(" -P, --pairs          use key=\"value\" output format\n"), out);
 	fputs(_(" -S, --scsi           output info about SCSI devices\n"), out);
+	fputs(_(" -N, --nvme           output info about NVMe devices\n"), out);
 	fputs(_(" -T, --tree[=<column>] use tree format output\n"), out);
 	fputs(_(" -a, --all            print all devices\n"), out);
 	fputs(_(" -b, --bytes          print SIZE in bytes rather than in human readable format\n"), out);
@@ -2010,6 +2021,7 @@ int main(int argc, char *argv[])
 		{ "paths",      no_argument,       NULL, 'p' },
 		{ "pairs",      no_argument,       NULL, 'P' },
 		{ "scsi",       no_argument,       NULL, 'S' },
+		{ "nvme",       no_argument,       NULL, 'N' },
 		{ "sort",	required_argument, NULL, 'x' },
 		{ "sysroot",    required_argument, NULL, OPT_SYSROOT },
 		{ "shell",      no_argument,       NULL, 'y' },
@@ -2043,7 +2055,7 @@ int main(int argc, char *argv[])
 	lsblk_init_debug();
 
 	while((c = getopt_long(argc, argv,
-				"AabdDzE:e:fhJlnMmo:OpPiI:rstVST::w:x:y",
+				"AabdDzE:e:fhJlNnMmo:OpPiI:rstVST::w:x:y",
 				longopts, NULL)) != -1) {
 
 		err_exclusive_options(c, longopts, excl, excl_st);
@@ -2165,6 +2177,16 @@ int main(int argc, char *argv[])
 			add_uniq_column(COL_SERIAL);
 			add_uniq_column(COL_TRANSPORT);
 			break;
+		case 'N':
+			lsblk->nodeps = 1;
+			lsblk->nvme = 1;
+			add_uniq_column(COL_NAME);
+			add_uniq_column(COL_TYPE);
+			add_uniq_column(COL_MODEL);
+			add_uniq_column(COL_SERIAL);
+			add_uniq_column(COL_TRANSPORT);
+			add_uniq_column(COL_RQ_SIZE);
+			break;
 		case 'T':
 			force_tree = 1;
 			if (optarg) {
diff --git a/misc-utils/lsblk.h b/misc-utils/lsblk.h
index b20aa6be9..536120a9c 100644
--- a/misc-utils/lsblk.h
+++ b/misc-utils/lsblk.h
@@ -51,6 +51,7 @@ struct lsblk {
 	unsigned int merge:1;           /* merge sub-trees */
 	unsigned int nodeps:1;		/* don't print slaves/holders */
 	unsigned int scsi:1;		/* print only device with HCTL (SCSI) */
+	unsigned int nvme:1;		/* print NVMe device only */
 	unsigned int paths:1;		/* print devnames with "/dev" prefix */
 	unsigned int sort_hidden:1;	/* sort column not between output columns */
 	unsigned int dedup_hidden :1;	/* deduplication column not between output columns */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/5] lsblk: support virtio block
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
  2022-06-03 12:23 ` [PATCH 1/5] lsblk: add -N/--nvme zhenwei pi
@ 2022-06-03 12:23 ` zhenwei pi
  2022-06-03 12:24 ` [PATCH 3/5] lsblk: add -v/--virtio zhenwei pi
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:23 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

virtio blk is quite popular in the virtual machines, support 'TRAN'
column for a virtio block device.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 misc-utils/lsblk.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 047f744be..dfa317970 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -514,8 +514,10 @@ static char *get_transport(struct lsblk_device *dev)
 			trans = "ata";
 		free(attr);
 
-	} else if (strncmp(dev->name, "nvme", 4) == 0)
+	} else if (strncmp(dev->name, "nvme", 4) == 0) {
 		trans = "nvme";
+	} else if (strncmp(dev->name, "vd", 2) == 0)
+		trans = "virtio";
 
 	return trans ? xstrdup(trans) : NULL;
 }
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] lsblk: add -v/--virtio
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
  2022-06-03 12:23 ` [PATCH 1/5] lsblk: add -N/--nvme zhenwei pi
  2022-06-03 12:23 ` [PATCH 2/5] lsblk: support virtio block zhenwei pi
@ 2022-06-03 12:24 ` zhenwei pi
  2022-06-03 12:24 ` [PATCH 4/5] lsblk: introduce 'MQ' column zhenwei pi
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:24 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

Add -v/--virtio to filter the virtio block devices.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 bash-completion/lsblk   |  1 +
 misc-utils/lsblk.8.adoc |  3 +++
 misc-utils/lsblk.c      | 23 ++++++++++++++++++++++-
 misc-utils/lsblk.h      |  1 +
 4 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/bash-completion/lsblk b/bash-completion/lsblk
index 011af41c2..697dd23d2 100644
--- a/bash-completion/lsblk
+++ b/bash-completion/lsblk
@@ -80,6 +80,7 @@ _lsblk_module()
 				--topology
 				--scsi
 				--nvme
+				--virtio
 				--sort
 				--width
 				--help
diff --git a/misc-utils/lsblk.8.adoc b/misc-utils/lsblk.8.adoc
index 8c6d50f79..6a9770ef2 100644
--- a/misc-utils/lsblk.8.adoc
+++ b/misc-utils/lsblk.8.adoc
@@ -75,6 +75,9 @@ Output info about device owner, group and mode. This option is equivalent to *-o
 *-N*, *--nvme*::
 Output info about NVMe devices only.
 
+*-v*, *--virtio*::
+Output info about virtio devices only.
+
 *-n*, *--noheadings*::
 Do not print a header line.
 
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index dfa317970..64d7edad6 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -1361,6 +1361,16 @@ static int initialize_device(struct lsblk_device *dev,
 		}
 	}
 
+	/* ignore non-virtio devices */
+	if (lsblk->virtio) {
+		char *transport = get_transport(dev);
+
+		if (!transport || strcmp(transport, "virtio")) {
+			DBG(DEV, ul_debugobj(dev, "non-virtio device -- ignore"));
+			return -1;
+		}
+	}
+
 	DBG(DEV, ul_debugobj(dev, "%s: context successfully initialized", dev->name));
 	return 0;
 }
@@ -1938,6 +1948,7 @@ static void __attribute__((__noreturn__)) usage(void)
 	fputs(_(" -P, --pairs          use key=\"value\" output format\n"), out);
 	fputs(_(" -S, --scsi           output info about SCSI devices\n"), out);
 	fputs(_(" -N, --nvme           output info about NVMe devices\n"), out);
+	fputs(_(" -v, --virtio         output info about virtio devices\n"), out);
 	fputs(_(" -T, --tree[=<column>] use tree format output\n"), out);
 	fputs(_(" -a, --all            print all devices\n"), out);
 	fputs(_(" -b, --bytes          print SIZE in bytes rather than in human readable format\n"), out);
@@ -2024,6 +2035,7 @@ int main(int argc, char *argv[])
 		{ "pairs",      no_argument,       NULL, 'P' },
 		{ "scsi",       no_argument,       NULL, 'S' },
 		{ "nvme",       no_argument,       NULL, 'N' },
+		{ "virtio",     no_argument,       NULL, 'v' },
 		{ "sort",	required_argument, NULL, 'x' },
 		{ "sysroot",    required_argument, NULL, OPT_SYSROOT },
 		{ "shell",      no_argument,       NULL, 'y' },
@@ -2057,7 +2069,7 @@ int main(int argc, char *argv[])
 	lsblk_init_debug();
 
 	while((c = getopt_long(argc, argv,
-				"AabdDzE:e:fhJlNnMmo:OpPiI:rstVST::w:x:y",
+				"AabdDzE:e:fhJlNnMmo:OpPiI:rstVvST::w:x:y",
 				longopts, NULL)) != -1) {
 
 		err_exclusive_options(c, longopts, excl, excl_st);
@@ -2189,6 +2201,15 @@ int main(int argc, char *argv[])
 			add_uniq_column(COL_TRANSPORT);
 			add_uniq_column(COL_RQ_SIZE);
 			break;
+		case 'v':
+			lsblk->nodeps = 1;
+			lsblk->virtio = 1;
+			add_uniq_column(COL_NAME);
+			add_uniq_column(COL_TYPE);
+			add_uniq_column(COL_TRANSPORT);
+			add_uniq_column(COL_SIZE);
+			add_uniq_column(COL_RQ_SIZE);
+			break;
 		case 'T':
 			force_tree = 1;
 			if (optarg) {
diff --git a/misc-utils/lsblk.h b/misc-utils/lsblk.h
index 536120a9c..31c9ecad5 100644
--- a/misc-utils/lsblk.h
+++ b/misc-utils/lsblk.h
@@ -52,6 +52,7 @@ struct lsblk {
 	unsigned int nodeps:1;		/* don't print slaves/holders */
 	unsigned int scsi:1;		/* print only device with HCTL (SCSI) */
 	unsigned int nvme:1;		/* print NVMe device only */
+	unsigned int virtio:1;		/* print virtio device only */
 	unsigned int paths:1;		/* print devnames with "/dev" prefix */
 	unsigned int sort_hidden:1;	/* sort column not between output columns */
 	unsigned int dedup_hidden :1;	/* deduplication column not between output columns */
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 4/5] lsblk: introduce 'MQ' column
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
                   ` (2 preceding siblings ...)
  2022-06-03 12:24 ` [PATCH 3/5] lsblk: add -v/--virtio zhenwei pi
@ 2022-06-03 12:24 ` zhenwei pi
  2022-06-06 10:41   ` Karel Zak
  2022-06-03 12:24 ` [PATCH 5/5] lsblk: enable 'MQ' for NVMe/virtio by default zhenwei pi
  2022-06-06 10:37 ` [PATCH 0/5] Support --nvme/--virtio and MQ Karel Zak
  5 siblings, 1 reply; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:24 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

Typically a modern block device supports mutil queues feature, count
queues by walking '$sysfs/mq' directory. If no '$sysfs/mq' exists, it
is a legacy single queue.

~# lsblk --nvme -o NAME,TYPE,MODEL,TRAN,RQ-SIZE,MQ
NAME    TYPE MODEL                      TRAN   RQ-SIZE  MQ
nvme0n1 disk INTEL SSDPF2KX038TZ        nvme      1023 135
nvme3n1 disk INTEL SSDPE2KX020T8        nvme      1023 128
nvme1n1 disk SAMSUNG MZQL23T8HCLS-00A07 nvme      1023 129
nvme2n2 disk RP2A03T8RK004LX            nvme      1023  64
nvme2n3 disk RP2A03T8RK004LX            nvme      1023  64

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 bash-completion/lsblk |  2 +-
 misc-utils/lsblk.c    | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/bash-completion/lsblk b/bash-completion/lsblk
index 697dd23d2..6756764b2 100644
--- a/bash-completion/lsblk
+++ b/bash-completion/lsblk
@@ -11,7 +11,7 @@ _lsblk_module()
 		RO RM HOTPLUG MODEL SERIAL SIZE STATE OWNER GROUP MODE ALIGNMENT MIN-IO OPT-IO
 		PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE TYPE DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
 		WSAME WWN RAND PKNAME HCTL TRAN SUBSYSTEMS REV VENDOR ZONED ZONE-SZ ZONE-WGRAN
-		ZONE-APP ZONE-NR ZONE-OMAX ZONE-AMAX DAX
+		ZONE-APP ZONE-NR ZONE-OMAX ZONE-AMAX DAX MQ
 	"
 
 	case $prev in
diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index 64d7edad6..d9c4ee982 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -90,6 +90,7 @@ enum {
 	COL_MINIO,
 	COL_MODE,
 	COL_MODEL,
+	COL_MQ,
 	COL_NAME,
 	COL_OPTIO,
 	COL_OWNER,
@@ -189,6 +190,7 @@ static struct colinfo infos[] = {
 	[COL_MINIO] = { "MIN-IO", 6, SCOLS_FL_RIGHT, N_("minimum I/O size"), COLTYPE_NUM },
 	[COL_MODEL] = { "MODEL", 0.1, SCOLS_FL_TRUNC, N_("device identifier") },
 	[COL_MODE] = { "MODE", 10, 0, N_("device node permissions") },
+	[COL_MQ] = { "MQ", 3, SCOLS_FL_RIGHT, N_("device queues") },
 	[COL_NAME] = { "NAME", 0.25, SCOLS_FL_NOEXTREMES, N_("device name") },
 	[COL_OPTIO] = { "OPT-IO", 6, SCOLS_FL_RIGHT, N_("optimal I/O size"), COLTYPE_NUM },
 	[COL_OWNER] = { "OWNER", 0.1, SCOLS_FL_TRUNC, N_("user name"), },
@@ -746,6 +748,34 @@ static void device_read_bytes(struct lsblk_device *dev, char *path, char **str,
 	}
 }
 
+static void process_mq(struct lsblk_device *dev, char **str)
+{
+	DIR *dir;
+	struct dirent *d;
+	unsigned int queues = 0;
+
+	DBG(DEV, ul_debugobj(dev, "%s: process mq", dev->name));
+
+	dir = ul_path_opendir(dev->sysfs, "mq");
+	if (!dir) {
+		*str = xstrdup("1");
+		DBG(DEV, ul_debugobj(dev, "%s: no mq supported, use a single queue", dev->name));
+		return;
+	}
+
+	while ((d = xreaddir(dir))) {
+		if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
+			continue;
+
+		queues++;
+	}
+
+	closedir(dir);
+
+	DBG(DEV, ul_debugobj(dev, "%s: has %d queues", dev->name, queues));
+	xasprintf(str, "%3u", queues);
+}
+
 /*
  * Generates data (string) for column specified by column ID for specified device. If sortdata
  * is not NULL then returns number usable to sort the column if the data are available for the
@@ -1143,6 +1173,9 @@ static char *device_get_data(
 	case COL_DAX:
 		ul_path_read_string(dev->sysfs, &str, "queue/dax");
 		break;
+	case COL_MQ:
+		process_mq(dev, &str);
+		break;
 	};
 
 	return str;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 5/5] lsblk: enable 'MQ' for NVMe/virtio by default
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
                   ` (3 preceding siblings ...)
  2022-06-03 12:24 ` [PATCH 4/5] lsblk: introduce 'MQ' column zhenwei pi
@ 2022-06-03 12:24 ` zhenwei pi
  2022-06-06 10:37 ` [PATCH 0/5] Support --nvme/--virtio and MQ Karel Zak
  5 siblings, 0 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-03 12:24 UTC (permalink / raw)
  To: kzak; +Cc: util-linux, zhenwei pi

NVMe/virtio devices typically has MQ feature, enable this column by
default for option '--nvme/--virtio'.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 misc-utils/lsblk.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c
index d9c4ee982..a09ff2a1f 100644
--- a/misc-utils/lsblk.c
+++ b/misc-utils/lsblk.c
@@ -2233,6 +2233,7 @@ int main(int argc, char *argv[])
 			add_uniq_column(COL_SERIAL);
 			add_uniq_column(COL_TRANSPORT);
 			add_uniq_column(COL_RQ_SIZE);
+			add_uniq_column(COL_MQ);
 			break;
 		case 'v':
 			lsblk->nodeps = 1;
@@ -2242,6 +2243,7 @@ int main(int argc, char *argv[])
 			add_uniq_column(COL_TRANSPORT);
 			add_uniq_column(COL_SIZE);
 			add_uniq_column(COL_RQ_SIZE);
+			add_uniq_column(COL_MQ);
 			break;
 		case 'T':
 			force_tree = 1;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 0/5] Support --nvme/--virtio and MQ
  2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
                   ` (4 preceding siblings ...)
  2022-06-03 12:24 ` [PATCH 5/5] lsblk: enable 'MQ' for NVMe/virtio by default zhenwei pi
@ 2022-06-06 10:37 ` Karel Zak
  5 siblings, 0 replies; 9+ messages in thread
From: Karel Zak @ 2022-06-06 10:37 UTC (permalink / raw)
  To: zhenwei pi; +Cc: util-linux

On Fri, Jun 03, 2022 at 08:23:57PM +0800, zhenwei pi wrote:
> zhenwei pi (5):
>   lsblk: add -N/--nvme
>   lsblk: support virtio block
>   lsblk: add -v/--virtio
>   lsblk: introduce 'MQ' column
>   lsblk: enable 'MQ' for NVMe/virtio by default
> 
>  bash-completion/lsblk   |  4 +-
>  misc-utils/lsblk.8.adoc |  6 +++
>  misc-utils/lsblk.c      | 84 ++++++++++++++++++++++++++++++++++++++++-
>  misc-utils/lsblk.h      |  2 +
>  4 files changed, 93 insertions(+), 3 deletions(-)

Applied, thanks!

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 4/5] lsblk: introduce 'MQ' column
  2022-06-03 12:24 ` [PATCH 4/5] lsblk: introduce 'MQ' column zhenwei pi
@ 2022-06-06 10:41   ` Karel Zak
  2022-06-06 10:45     ` zhenwei pi
  0 siblings, 1 reply; 9+ messages in thread
From: Karel Zak @ 2022-06-06 10:41 UTC (permalink / raw)
  To: zhenwei pi; +Cc: util-linux

On Fri, Jun 03, 2022 at 08:24:01PM +0800, zhenwei pi wrote:
> +static void process_mq(struct lsblk_device *dev, char **str)
> +{
> +	DIR *dir;
> +	struct dirent *d;
> +	unsigned int queues = 0;
> +
> +	DBG(DEV, ul_debugobj(dev, "%s: process mq", dev->name));
> +
> +	dir = ul_path_opendir(dev->sysfs, "mq");
> +	if (!dir) {
> +		*str = xstrdup("1");
> +		DBG(DEV, ul_debugobj(dev, "%s: no mq supported, use a single queue", dev->name));
> +		return;
> +	}
> +
> +	while ((d = xreaddir(dir))) {
> +		if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
> +			continue;

 xreaddir() filters "." and "..".

 Anyway, there is a function ul_path_count_dirents() that does all the
 work. I made the change in the code.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Re: [PATCH 4/5] lsblk: introduce 'MQ' column
  2022-06-06 10:41   ` Karel Zak
@ 2022-06-06 10:45     ` zhenwei pi
  0 siblings, 0 replies; 9+ messages in thread
From: zhenwei pi @ 2022-06-06 10:45 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux



On 6/6/22 18:41, Karel Zak wrote:
> On Fri, Jun 03, 2022 at 08:24:01PM +0800, zhenwei pi wrote:
>> +static void process_mq(struct lsblk_device *dev, char **str)
>> +{
>> +	DIR *dir;
>> +	struct dirent *d;
>> +	unsigned int queues = 0;
>> +
>> +	DBG(DEV, ul_debugobj(dev, "%s: process mq", dev->name));
>> +
>> +	dir = ul_path_opendir(dev->sysfs, "mq");
>> +	if (!dir) {
>> +		*str = xstrdup("1");
>> +		DBG(DEV, ul_debugobj(dev, "%s: no mq supported, use a single queue", dev->name));
>> +		return;
>> +	}
>> +
>> +	while ((d = xreaddir(dir))) {
>> +		if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
>> +			continue;
> 
>   xreaddir() filters "." and "..".
> 
>   Anyway, there is a function ul_path_count_dirents() that does all the
>   work. I made the change in the code.
> 
>      Karel
> 

Hi, Karel

Thanks!

-- 
zhenwei pi

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-06-06 10:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-03 12:23 [PATCH 0/5] Support --nvme/--virtio and MQ zhenwei pi
2022-06-03 12:23 ` [PATCH 1/5] lsblk: add -N/--nvme zhenwei pi
2022-06-03 12:23 ` [PATCH 2/5] lsblk: support virtio block zhenwei pi
2022-06-03 12:24 ` [PATCH 3/5] lsblk: add -v/--virtio zhenwei pi
2022-06-03 12:24 ` [PATCH 4/5] lsblk: introduce 'MQ' column zhenwei pi
2022-06-06 10:41   ` Karel Zak
2022-06-06 10:45     ` zhenwei pi
2022-06-03 12:24 ` [PATCH 5/5] lsblk: enable 'MQ' for NVMe/virtio by default zhenwei pi
2022-06-06 10:37 ` [PATCH 0/5] Support --nvme/--virtio and MQ Karel Zak

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).