aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhenwei pi <pizhenwei@bytedance.com>2022-06-03 20:24:00 +0800
committerKarel Zak <kzak@redhat.com>2022-06-06 12:31:56 +0200
commit1b3e8f5d2c9c8a4eb2df578010c10f84b057d501 (patch)
treea79ee7cbcd60ac82da385dabbb70fbdde2c43c6b
parent0540d07611a543371348109d6c06f707276ffbce (diff)
downloadutil-linux-1b3e8f5d2c9c8a4eb2df578010c10f84b057d501.tar.gz
lsblk: add -v/--virtio
Add -v/--virtio to filter the virtio block devices. Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
-rw-r--r--bash-completion/lsblk1
-rw-r--r--misc-utils/lsblk.8.adoc3
-rw-r--r--misc-utils/lsblk.c23
-rw-r--r--misc-utils/lsblk.h1
4 files changed, 27 insertions, 1 deletions
diff --git a/bash-completion/lsblk b/bash-completion/lsblk
index 011af41c24..697dd23d21 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 8c6d50f79c..6a9770ef22 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 dfa3179707..64d7edad6f 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 536120a9cc..31c9ecad5d 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 */