On 03/20/2015 04:53 AM, Martin Kletzander wrote:
On Thu, Mar 19, 2015 at 07:30:26PM -0400, John Ferlan wrote:
>
>
<...snip...>
>> @@ -792,9 +795,12 @@ static void
>> qemuRestoreCgroupState(virDomainObjPtr vm)
>> {
>> char *mem_mask = NULL;
>> + char *nodeset = NULL;
>> int empty = -1;
>> qemuDomainObjPrivatePtr priv = vm->privateData;
>> + size_t i = 0;
>> virBitmapPtr all_nodes;
>> + virCgroupPtr cgroup_temp = NULL;
>>
>> if (!(all_nodes = virNumaGetHostNodeset()))
>> goto error;
>> @@ -809,9 +815,37 @@ qemuRestoreCgroupState(virDomainObjPtr vm)
>
> So this is the path for currently running guests to be adjusted on
> livirtd restart after install, right?
>
>> if (virCgroupSetCpusetMems(priv->cgroup, mem_mask) < 0)
>> goto error;
>>
>> + for (i = 0; i < priv->nvcpupids; i++) {
>> + if (virCgroupNewVcpu(priv->cgroup, i, false, &cgroup_temp) <
>> 0 ||
>> + virCgroupSetCpusetMemoryMigrate(cgroup_temp, true) < 0 ||
>> + virCgroupGetCpusetMems(cgroup_temp, &nodeset) < 0 ||
>> + virCgroupSetCpusetMems(cgroup_temp, nodeset) < 0)
>> + goto cleanup;
>> +
>> + virCgroupFree(&cgroup_temp);
>> + }
>> +
>> + for (i = 0; i < priv->niothreadpids; i++) {
>> + if (virCgroupNewIOThread(priv->cgroup, i, false,
>> &cgroup_temp) < 0 ||
>
> cgroup iothread id's are 1..n, so I believe this should be 'i + 1'
>
Yes, once again I felt for the contraption in this. That shall not
happen henceforth!
I usually use cscope in order to find all callers to help remind me
since I know my memory isn't as good as it once was...
I assume you've made the change and so that it's official this is your
ACK...
John
> simple enough to test by adding
<iothreads>2</iothreads> to your domain
> definition and making sure this works...
>
I remember trying with <iothreads>1</iothreads>, there must have been
no allocation as I only checked that the memory moved -- my bad.
> Beyond that - seems reasonable to me
>
> John