On 06/11/2012 12:49 AM, Osier Yang wrote: > On 2012年05月25日 11:33, Eric Blake wrote: >> Expose the recent API additions in virsh. Borrows ideas from 'dominfo' >> for the general type of information to display. Output looks like: >> >> $ tools/virsh snapshot-info fedora-local tmp >> Name: tmp >> Domain: fedora-local >> Current: no >> State: disk-snapshot >> Parent: - >> Children: 1 >> Descendants: 2 >> Metadata: yes >> >> possibly with fewer lines when talking to older servers. >> >> + /* Metadata; the fallback here relies on the fact that metadata >> + * used to have an all-or-nothing effect on snapshot count. */ >> + metadata = virDomainSnapshotHasMetadata(snapshot, 0); >> + if (metadata< 0) { >> + virResetLastError(); >> + count = virDomainSnapshotNum(dom, >> + VIR_DOMAIN_SNAPSHOT_LIST_METADATA); >> + metadata = count != 0; >> + } >> + vshPrint(ctl, "%-15s %s\n", _("Metadata:"), >> + metadata> 0 ? _("yes") : _("no")); I tweaked this part slightly (if virDomainSnapshotNum() fails due to the LIST_METADATA flag being unsupported, then that should omit the Metadata: line as we don't have an accurate answer). > > ACK Thanks; pushed now, with this squashed in. diff --git c/tools/virsh.c w/tools/virsh.c index 5e6fe6d..744b629 100644 --- c/tools/virsh.c +++ w/tools/virsh.c @@ -16657,7 +16657,7 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) goto cleanup; } flags = 0; - count = virDomainSnapshotNumChildren(snapshot, 0); + count = virDomainSnapshotNumChildren(snapshot, flags); if (count < 0) goto cleanup; vshPrint(ctl, "%-15s %d\n", _("Children:"), count); @@ -16671,13 +16671,13 @@ cmdSnapshotInfo(vshControl *ctl, const vshCmd *cmd) * used to have an all-or-nothing effect on snapshot count. */ metadata = virDomainSnapshotHasMetadata(snapshot, 0); if (metadata < 0) { + metadata = virDomainSnapshotNum(dom, + VIR_DOMAIN_SNAPSHOT_LIST_METADATA); virResetLastError(); - count = virDomainSnapshotNum(dom, - VIR_DOMAIN_SNAPSHOT_LIST_METADATA); - metadata = count != 0; } - vshPrint(ctl, "%-15s %s\n", _("Metadata:"), - metadata > 0 ? _("yes") : _("no")); + if (metadata >= 0) + vshPrint(ctl, "%-15s %s\n", _("Metadata:"), + metadata ? _("yes") : _("no")); ret = true; -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list