Browse Source

lsblk: add -v/--virtio

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

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
pull/1707/head
zhenwei pi 2 months ago committed by Karel Zak
parent
commit
1b3e8f5d2c
  1. 1
      bash-completion/lsblk
  2. 3
      misc-utils/lsblk.8.adoc
  3. 23
      misc-utils/lsblk.c
  4. 1
      misc-utils/lsblk.h

1
bash-completion/lsblk

@ -80,6 +80,7 @@ _lsblk_module()
--topology
--scsi
--nvme
--virtio
--sort
--width
--help

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

23
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) {

1
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 */

Loading…
Cancel
Save