[libvirt] [PATCH 4/7] qemu: Abstract code for cpuset controller setting into a helper

Osier Yang jyang at redhat.com
Mon May 20 11:58:22 UTC 2013


On 20/05/13 19:10, Daniel P. Berrange wrote:
> On Fri, May 17, 2013 at 07:59:34PM +0800, Osier Yang wrote:
>> ---
>>   src/qemu/qemu_cgroup.c | 73 ++++++++++++++++++++++++++++++++------------------
>>   1 file changed, 47 insertions(+), 26 deletions(-)
>>
>> diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
>> index 1e8afb1..8f84ef9 100644
>> --- a/src/qemu/qemu_cgroup.c
>> +++ b/src/qemu/qemu_cgroup.c
>> @@ -626,6 +626,51 @@ cleanup:
>>       return ret;
>>   }
>>   
>> +static int
>> +qemuSetupCpusetCgroup(virDomainObjPtr vm,
>> +                      virBitmapPtr nodemask)
>> +{
>> +    qemuDomainObjPrivatePtr priv = vm->privateData;
>> +    char *mask = NULL;
>> +    int rc;
>> +    int ret = -1;
>> +
>> +    if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET))
>> +        return 0;
>> +
>> +    if ((vm->def->numatune.memory.nodemask ||
>> +         (vm->def->numatune.memory.placement_mode ==
>> +          VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO)) &&
>> +        vm->def->numatune.memory.mode == VIR_DOMAIN_NUMATUNE_MEM_STRICT) {
>> +
>> +        if (vm->def->numatune.memory.placement_mode ==
>> +            VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO)
>> +            mask = virBitmapFormat(nodemask);
>> +        else
>> +            mask = virBitmapFormat(vm->def->numatune.memory.nodemask);
>> +
>> +        if (!mask) {
>> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> +                           _("failed to convert memory nodemask"));
>> +            goto cleanup;
>> +        }
>> +
>> +        rc = virCgroupSetCpusetMems(priv->cgroup, mask);
>> +
>> +        if (rc != 0) {
>> +            virReportSystemError(-rc,
>> +                                 _("Unable to set cpuset.mems for domain %s"),
>> +                                 vm->def->name);
>> +            goto cleanup;
>> +        }
>> +    }
>> +
>> +    ret = 0;
>> +cleanup:
>> +    VIR_FREE(mask);
>> +    return ret;
>> +}
>> +
>
> Add a 2nd blank line
>
>>   int qemuInitCgroup(virQEMUDriverPtr driver,
>>                      virDomainObjPtr vm,
>>                      bool startup)
>> @@ -772,32 +817,8 @@ int qemuSetupCgroup(virQEMUDriverPtr driver,
>>           }
>>       }
>>   
>> -    if ((vm->def->numatune.memory.nodemask ||
>> -         (vm->def->numatune.memory.placement_mode ==
>> -          VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO)) &&
>> -        vm->def->numatune.memory.mode == VIR_DOMAIN_NUMATUNE_MEM_STRICT &&
>> -        virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET)) {
>> -        char *mask = NULL;
>> -        if (vm->def->numatune.memory.placement_mode ==
>> -            VIR_NUMA_TUNE_MEM_PLACEMENT_MODE_AUTO)
>> -            mask = virBitmapFormat(nodemask);
>> -        else
>> -            mask = virBitmapFormat(vm->def->numatune.memory.nodemask);
>> -        if (!mask) {
>> -            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> -                           _("failed to convert memory nodemask"));
>> -            goto cleanup;
>> -        }
>> -
>> -        rc = virCgroupSetCpusetMems(priv->cgroup, mask);
>> -        VIR_FREE(mask);
>> -        if (rc != 0) {
>> -            virReportSystemError(-rc,
>> -                                 _("Unable to set cpuset.mems for domain %s"),
>> -                                 vm->def->name);
>> -            goto cleanup;
>> -        }
>> -    }
>> +    if (qemuSetupCpusetCgroup(vm, nodemask) < 0)
>> +        goto cleanup;
>>   
>>   done:
>>       rc = 0;
> ACK with whitespace tweak
>
>
Pushed with the tweaks.




More information about the libvir-list mailing list