virsh # domblkinfo demoguest /dev/hda2
Capacity: 1048576000
Allocation: 104857600
Physical: 104857600
* tools/virsh.c: Implement domblkinfo command mapping to the
new virDomainGetBlockInfo API
---
tools/virsh.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
tools/virsh.pod | 4 ++++
2 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index 5bcf0ed..ed73061 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -1045,6 +1045,53 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd)
}
/*
+ * "domblkinfo" command
+ */
+static const vshCmdInfo info_domblkinfo[] = {
+ {"help", N_("domain block device size information")},
+ {"desc", N_("Get block device size info for a domain.")},
+ {NULL, NULL}
+};
+
+static const vshCmdOptDef opts_domblkinfo[] = {
+ {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or
uuid")},
+ {"device", VSH_OT_DATA, VSH_OFLAG_REQ, N_("block device")},
+ {NULL, 0, 0, NULL}
+};
+
+static int
+cmdDomblkinfo(vshControl *ctl, const vshCmd *cmd)
+{
+ virDomainBlockInfo info;
+ virDomainPtr dom;
+ int ret = TRUE;
+ const char *device;
+
+ if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
+ return FALSE;
+
+ if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
+ return FALSE;
+
+ if (!(device = vshCommandOptString (cmd, "device", NULL))) {
+ virDomainFree(dom);
+ return FALSE;
+ }
+
+ if (virDomainGetBlockInfo(dom, device, &info, 0) < 0) {
+ virDomainFree(dom);
+ return FALSE;
+ }
+
+ vshPrint(ctl, "%-15s %llu\n", _("Capacity:"), info.capacity);
+ vshPrint(ctl, "%-15s %llu\n", _("Allocation:"),
info.allocation);
+ vshPrint(ctl, "%-15s %llu\n", _("Physical:"), info.physical);
+
+ virDomainFree(dom);
+ return ret;
+}
+
+/*
* "suspend" command
*/
static const vshCmdInfo info_suspend[] = {
@@ -8664,6 +8711,7 @@ static const vshCmdDef commands[] = {
{"domblkstat", cmdDomblkstat, opts_domblkstat, info_domblkstat},
{"domifstat", cmdDomIfstat, opts_domifstat, info_domifstat},
{"dommemstat", cmdDomMemStat, opts_dommemstat, info_dommemstat},
+ {"domblkinfo", cmdDomblkinfo, opts_domblkinfo, info_domblkinfo},
{"domxml-from-native", cmdDomXMLFromNative, opts_domxmlfromnative,
info_domxmlfromnative},
{"domxml-to-native", cmdDomXMLToNative, opts_domxmltonative,
info_domxmltonative},
{"dumpxml", cmdDumpXML, opts_dumpxml, info_dumpxml},
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 09ad3e2..cf7585d 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -296,6 +296,10 @@ Get network interface stats for a running domain.
Get memory stats for a running domain.
+=item B<domblkinfo> I<domain> I<block-device>
+
+Get block device size info for a domain.
+
=item B<dominfo> I<domain-id>
Returns basic information about the domain.
--
1.6.6.1