On 06/19/2018 06:01 AM, Chen Hanxiao wrote: > From: Chen Hanxiao <chenhanxiao@xxxxxxxxx> > > This patch introduces --all to show all block devices info > of guests like: > > virsh # domblkinfo w08 --all > Target Capacity Allocation Physical > --------------------------------------------------- > hda 42949672960 9878110208 9878110208 > vda 10737418240 10736439296 10737418240 > > Target Capacity Allocation Physical > --------------------------------------------------- > hda 40.000 GiB 9.200 GiB 9.200 GiB > vda 10.000 GiB 9.999 GiB 10.000 GiB > > Signed-off-by: Chen Hanxiao <chenhanxiao@xxxxxxxxx> > --- > v3: > check error code on network disk > v2: > add support --human to --all > v1.1: > fix self-test > > tools/virsh-domain-monitor.c | 128 +++++++++++++++++++++++++++++------ > tools/virsh.pod | 5 +- > 2 files changed, 112 insertions(+), 21 deletions(-) > Made a few adjustments as noted below... and will push shortly. Reviewed-by: John Ferlan <jferlan@xxxxxxxxxx> John > diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c > index daa86e8310..43e39f79c1 100644 > --- a/tools/virsh-domain-monitor.c > +++ b/tools/virsh-domain-monitor.c [...] > > static bool > @@ -430,25 +466,77 @@ cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd) > virDomainPtr dom; > bool ret = false; > bool human = false; [...] > + > + for (i = 0; i < ndisks; i++) { > + ctxt->node = disks[i]; > + protocol = virXPathString("string(./source/@protocol)", ctxt); > + target = virXPathString("string(./target/@dev)", ctxt); > + > + rc = virDomainGetBlockInfo(dom, target, &info, 0); > + > + if (rc < 0) { Added the following comment: /* If protocol is present that's an indication of a networked * storage device which cannot provide statistics, so generate * 0 based data and get the next disk. */ > + if (protocol && !active && > + virGetLastErrorCode() == VIR_ERR_INTERNAL_ERROR && > + virGetLastErrorDomain() == VIR_FROM_STORAGE) > + memset(&info, 0, sizeof(info)); Since we're ditching the error and continuing: vshResetLibvirtError(); > + else > + goto cleanup; > + } > + > + cmdDomblkinfoPrint(ctl, &info, target, human, false); > + > + VIR_FREE(target); Since we're in the loop: VIR_FREE(protocol); > + } > + } else { > + if (virDomainGetBlockInfo(dom, device, &info, 0) < 0) > + goto cleanup; > + > + cmdDomblkinfoPrint(ctl, &info, NULL, human, false); > + } > > ret = true; [...] -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list