
On 11/15/2011 12:15 AM, Hu Tao wrote:
We can filter out 0-weight here:
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b35c83c..5160003 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -10893,6 +10893,7 @@ virDomainDefFormatInternal(virDomainDefPtr def, char uuidstr[VIR_UUID_STRING_BUFLEN]; const char *type = NULL; int n, allones = 1; + int blkio = 0;
If we go this route, then this should be bool, not int.
virCheckFlags(DUMPXML_FLAGS | VIR_DOMAIN_XML_INTERNAL_STATUS | @@ -10930,7 +10931,15 @@ virDomainDefFormatInternal(virDomainDefPtr def, def->mem.cur_balloon);
/* add blkiotune only if there are any */ - if (def->blkio.weight || def->blkio.devices) { + + if (def->blkio.weight) + blkio = 1; + for (n = 0; n < def->blkio.ndevices; n++) { + if (def->blkio.devices[n].weight) + blkio = 1;
and once you set the flag, you can break to shorten the loop.
+ } + + if (blkio) { virBufferAddLit(buf, " <blkiotune>\n");
if (def->blkio.weight) @@ -10938,6 +10947,8 @@ virDomainDefFormatInternal(virDomainDefPtr def, def->blkio.weight);
for (n = 0; n < def->blkio.ndevices; n++) { + if (def->blkio.devices[n].weight == 0) + continue; virBufferAddLit(buf, " <device>\n"); virBufferEscapeString(buf, " <path>%s</path>\n", def->blkio.devices[n].path);
-- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org