[libvirt] [PATCH 1/7] qemu: Abstract the code for blkio controller setting into a helper
Osier Yang
jyang at redhat.com
Mon May 20 11:25:05 UTC 2013
On 20/05/13 19:06, Daniel P. Berrange wrote:
> On Fri, May 17, 2013 at 07:59:31PM +0800, Osier Yang wrote:
>> ---
>> src/qemu/qemu_cgroup.c | 90 ++++++++++++++++++++++++++++----------------------
>> 1 file changed, 50 insertions(+), 40 deletions(-)
>>
>> diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
>> index 9784f31..0c4792e 100644
>> --- a/src/qemu/qemu_cgroup.c
>> +++ b/src/qemu/qemu_cgroup.c
>> @@ -407,6 +407,53 @@ cleanup:
>> return ret;
>> }
>>
>> +static int
>> +qemuSetupBlkioCgroup(virDomainObjPtr vm)
>> +{
>> + qemuDomainObjPrivatePtr priv = vm->privateData;
>> + int rc = -1;
>> + int i;
>> +
>> + if (!virCgroupHasController(priv->cgroup,
>> + VIR_CGROUP_CONTROLLER_BLKIO)) {
>> + if (vm->def->blkio.weight || vm->def->blkio.ndevices) {
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> + _("Block I/O tuning is not available on this host"));
>> + return -1;
>> + } else {
>> + return 0;
>> + }
>> + }
>> +
>> + if (vm->def->blkio.weight != 0) {
>> + rc = virCgroupSetBlkioWeight(priv->cgroup, vm->def->blkio.weight);
>> + if (rc != 0) {
>> + virReportSystemError(-rc,
>> + _("Unable to set io weight for domain %s"),
>> + vm->def->name);
>> + return -1;
>> + }
>> + }
>> +
>> + if (vm->def->blkio.ndevices) {
>> + for (i = 0; i < vm->def->blkio.ndevices; i++) {
>> + virBlkioDeviceWeightPtr dw = &vm->def->blkio.devices[i];
>> + if (!dw->weight)
>> + continue;
>> + rc = virCgroupSetBlkioDeviceWeight(priv->cgroup, dw->path,
>> + dw->weight);
>> + if (rc != 0) {
>> + virReportSystemError(-rc,
>> + _("Unable to set io device weight "
>> + "for domain %s"),
>> + vm->def->name);
>> + return -1;
>> + }
>> + }
>> + }
>> +
>> + return 0;
>> +}
>>
> Use 2 blank lines here
>
>> int qemuInitCgroup(virQEMUDriverPtr driver,
>> virDomainObjPtr vm,
>> @@ -517,7 +564,6 @@ cleanup:
>> return rc;
>> }
>>
>> -
>
> Keep 2 blank lines between functions
>
>> int qemuSetupCgroup(virQEMUDriverPtr driver,
>> virDomainObjPtr vm,
>> virBitmapPtr nodemask)
>> @@ -609,7 +655,7 @@ int qemuSetupCgroup(virQEMUDriverPtr driver,
>>
>> if (vm->def->tpm &&
>> (qemuSetupTPMCgroup(vm->def,
>> - vm->def->tpm,
>> + vm->def->tpm,
>> vm) < 0))
>> goto cleanup;
>>
>> @@ -619,44 +665,8 @@ int qemuSetupCgroup(virQEMUDriverPtr driver,
>> }
>> }
>>
>> - if (vm->def->blkio.weight != 0) {
>> - if (virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_BLKIO)) {
>> - rc = virCgroupSetBlkioWeight(priv->cgroup, vm->def->blkio.weight);
>> - if (rc != 0) {
>> - virReportSystemError(-rc,
>> - _("Unable to set io weight for domain %s"),
>> - vm->def->name);
>> - goto cleanup;
>> - }
>> - } else {
>> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> - _("Block I/O tuning is not available on this host"));
>> - goto cleanup;
>> - }
>> - }
>> -
>> - if (vm->def->blkio.ndevices) {
>> - if (virCgroupHasController(priv->cgroup, 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(priv->cgroup, dw->path,
>> - dw->weight);
>> - if (rc != 0) {
>> - virReportSystemError(-rc,
>> - _("Unable to set io device weight "
>> - "for domain %s"),
>> - vm->def->name);
>> - goto cleanup;
>> - }
>> - }
>> - } else {
>> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>> - _("Block I/O tuning is not available on this host"));
>> - goto cleanup;
>> - }
>> - }
>> + if (qemuSetupBlkioCgroup(vm) < 0)
>> + goto cleanup;
>>
>> if (virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
>> unsigned long long hard_limit = vm->def->mem.hard_limit;
> ACK with whitespace tweak
Pushed with the tweaks.
More information about the libvir-list
mailing list