And provide domain summary stat in that case, for lxc backend.
Use case is a container inheriting all devices from the host,
e.g. when doing application containerization.
* an unambiguous source name of the block device (the <source
* file='...'/> sub-element, such as "/path/to/image"). Valid names
* can be found by calling virDomainGetXMLDesc() and inspecting
- * elements within //domain/devices/disk.
+ * elements within //domain/devices/disk. Some drivers might also
+ * accept the empty string for the @disk parameter, and then yield
+ * summary stats for the entire domain.
*
* Domains may have more than one block device. To get stats for
* each you should make multiple calls to this function.
* an unambiguous source name of the block device (the <source
* file='...'/> sub-element, such as "/path/to/image"). Valid names
* can be found by calling virDomainGetXMLDesc() and inspecting
- * elements within //domain/devices/disk.
+ * elements within //domain/devices/disk. Some drivers might also
+ * accept the empty string for the @disk parameter, and then yield
+ * summary stats for the entire domain.
*
* Domains may have more than one block device. To get stats for
* each you should make multiple calls to this function.
},
{.name = "device",
.type = VSH_OT_DATA,
- .flags = VSH_OFLAG_REQ,
+ .flags = VSH_OFLAG_EMPTY_OK,
.help = N_("block device")
},
{.name = "human",
if (!(dom = vshCommandOptDomain(ctl, cmd, &name)))
return false;
+ /* device argument is optional now. if it's missing, supply empty
+ string to denote 'all devices'. A NULL device arg would violate
+ API contract.
+ */
if (vshCommandOptStringReq(ctl, cmd, "device", &device) < 0)
goto cleanup;
+ if (!device)
+ device = "";
+
rc = virDomainBlockStatsFlags(dom, device, NULL, &nparams, 0);
/* It might fail when virDomainBlockStatsFlags is not
(e.g. SIGKILL) when the guest doesn't stop after a reasonable timeout;
return an error instead.
-=item B<domblkstat> I<domain> I<block-device> [I<--human>]
+=item B<domblkstat> I<domain> [I<block-device>] [I<--human>]
Get device block stats for a running domain. A I<block-device> corresponds
to a unique target name (<target dev='name'/>) or source file (<source
file='name'/>) for one of the disk devices attached to I<domain> (see
-also B<domblklist> for listing these names).
+also B<domblklist> for listing these names). On a lxc domain, omitting the
+I<block-device> yields device block stats summarily for the entire domain.
Use I<--human> for a more human readable output.