diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c index e5ca8f30e5c1f6f882b19fc8ba80fd7d0242a1f1..d663798abc2943300b63b179d372e627a8600667 100644 --- a/src/qemu/qemu_cgroup.c +++ b/src/qemu/qemu_cgroup.c @@ -317,6 +317,8 @@ int qemuSetupCgroup(struct qemud_driver *driver, if (qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_BLKIO)) { for (i = 0; i < vm->def->blkio.ndevices; i++) { virBlkioDeviceWeightPtr dw = &vm->def->blkio.devices[i]; + if (!dw->weight) + continue; rc = virCgroupSetBlkioDeviceWeight(cgroup, dw->path, dw->weight); if (rc != 0) { diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 39bd1bc87a24e325fad7e20fbb2c823d54284543..ed90c66d3754ee3329e89988c2d0d7c2f5d8b62f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6312,6 +6312,7 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, if (vm->def->blkio.ndevices > 0) { virBuffer buf = VIR_BUFFER_INITIALIZER; bool comma = false; + for (j = 0; j < vm->def->blkio.ndevices; j++) { if (!vm->def->blkio.devices[j].weight) continue; @@ -6372,9 +6373,15 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, case 1: /* blkiotune.device_weight */ if (persistentDef->blkio.ndevices > 0) { virBuffer buf = VIR_BUFFER_INITIALIZER; + bool comma = false; + for (j = 0; j < persistentDef->blkio.ndevices; j++) { - if (j) + if (!persistentDef->blkio.devices[j].weight) + continue; + if (comma) virBufferAddChar(&buf, ','); + else + comma = true; virBufferAsprintf(&buf, "%s,%u", persistentDef->blkio.devices[j].path, persistentDef->blkio.devices[j].weight); @@ -6384,7 +6391,8 @@ static int qemuDomainGetBlkioParameters(virDomainPtr dom, goto cleanup; } param->value.s = virBufferContentAndReset(&buf); - } else { + } + if (!param->value.s) { param->value.s = strdup(""); if (!param->value.s) { virReportOOMError();