Users of virsh complain that output of the domblkstat command is not intuitive enough. This patch adds explanation of fields returned by this command to the help section for domblkstat and the man page of virsh. Also a switch --human is added for domblkstat that prints the fields with more descriptive texts. https://bugzilla.redhat.com/show_bug.cgi?id=731656 --- tools/virsh.c | 52 +++++++++++++++++++++++++++++++++++++++++----------- tools/virsh.pod | 11 ++++++++++- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 15b9bdd..41ba1e4 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1054,13 +1054,21 @@ cleanup: */ static const vshCmdInfo info_domblkstat[] = { {"help", N_("get device block stats for a domain")}, - {"desc", N_("Get device block stats for a running domain.")}, + {"desc", N_("Get device block stats for a running domain.\n\n" + " Explanation of fields:\n" + " rd_req - count of read requests\n" + " rd_bytes - count of read bytes\n" + " wr_req - count of write requests\n" + " wr_bytes - count of written bytes\n" + " errs - error count")}, {NULL,NULL} }; static const vshCmdOptDef opts_domblkstat[] = { {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or uuid")}, {"device", VSH_OT_DATA, VSH_OFLAG_REQ, N_("block device")}, + {"human", VSH_OT_BOOL, 0, N_("print a more human readable output")}, + {NULL, 0, 0, NULL} }; @@ -1070,6 +1078,7 @@ cmdDomblkstat (vshControl *ctl, const vshCmd *cmd) virDomainPtr dom; const char *name = NULL, *device = NULL; struct _virDomainBlockStats stats; + int humanReadable = vshCommandOptBool(cmd, "human"); if (!vshConnectionUsability (ctl, ctl->conn)) return false; @@ -1088,20 +1097,41 @@ cmdDomblkstat (vshControl *ctl, const vshCmd *cmd) return false; } - if (stats.rd_req >= 0) - vshPrint (ctl, "%s rd_req %lld\n", device, stats.rd_req); + if (humanReadable) { + /* human friendly output */ + vshPrint(ctl, N_("Device: %s\n"), device); + + if (stats.rd_req >= 0) + vshPrint (ctl, N_("read request count: %lld\n"), stats.rd_req); + + if (stats.rd_bytes >= 0) + vshPrint (ctl, N_("number of read bytes: %lld\n"), stats.rd_bytes); + + if (stats.wr_req >= 0) + vshPrint (ctl, N_("write request count: %lld\n"), stats.wr_req); - if (stats.rd_bytes >= 0) - vshPrint (ctl, "%s rd_bytes %lld\n", device, stats.rd_bytes); + if (stats.wr_bytes >= 0) + vshPrint (ctl, N_("number of written bytes: %lld\n"), stats.wr_bytes); - if (stats.wr_req >= 0) - vshPrint (ctl, "%s wr_req %lld\n", device, stats.wr_req); + if (stats.errs >= 0) + vshPrint (ctl, N_("error count: %lld\n"), stats.errs); + } else { + /* script friendly output */ + if (stats.rd_req >= 0) + vshPrint (ctl, "%s rd_req %lld\n", device, stats.rd_req); + + if (stats.rd_bytes >= 0) + vshPrint (ctl, "%s rd_bytes %lld\n", device, stats.rd_bytes); - if (stats.wr_bytes >= 0) - vshPrint (ctl, "%s wr_bytes %lld\n", device, stats.wr_bytes); + if (stats.wr_req >= 0) + vshPrint (ctl, "%s wr_req %lld\n", device, stats.wr_req); - if (stats.errs >= 0) - vshPrint (ctl, "%s errs %lld\n", device, stats.errs); + if (stats.wr_bytes >= 0) + vshPrint (ctl, "%s wr_bytes %lld\n", device, stats.wr_bytes); + + if (stats.errs >= 0) + vshPrint (ctl, "%s errs %lld\n", device, stats.errs); + } virDomainFree(dom); return true; diff --git a/tools/virsh.pod b/tools/virsh.pod index 81d7a1e..620097d 100644 --- a/tools/virsh.pod +++ b/tools/virsh.pod @@ -419,10 +419,19 @@ the B<shutdown> command instead. However, this does not delete any storage volumes used by the guest, and if the domain is persistent, it can be restarted later. -=item B<domblkstat> I<domain> I<block-device> +=item B<domblkstat> I<domain> I<block-device> [I<--human>] Get device block stats for a running domain. +Use I<--human> for a more human readable output. + +B<Explanation of fields:> + rd_req - count of read requests + rd_bytes - count of read bytes + wr_req - count of write requests + wr_bytes - count of written bytes + errs - error count + =item B<domifstat> I<domain> I<interface-device> Get network interface stats for a running domain. -- 1.7.3.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list