[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Reflect cpupool in numa node affinity (v2)



On Mon, Jan 23, 2012 at 12:55 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
>>>> On 23.01.12 at 13:12, Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> wrote:
>> - introduce and use common macros for selecting cpupool based cpumasks
>
> I had hoped that you would do this as a separate prerequisite patch,
> but that it's in here I think there's no need to break it up.

But it would be a lot easier to check the logic if the two patches
were separate; both now, and when someone in the future tries is doing
archaeology to figure out what's going on.  I won't NACK a patch that
has them together, but I would strongly encourage you make them two
patches. :-)

 -George

>
>>@@ -333,23 +334,38 @@ struct domain *domain_create(
>>
>> void domain_update_node_affinity(struct domain *d)
>> {
>>-    cpumask_t cpumask;
>>+    cpumask_var_t cpumask;
>>+    cpumask_var_t online_affinity;
>>+    const cpumask_t *online;
>>     nodemask_t nodemask = NODE_MASK_NONE;
>>     struct vcpu *v;
>>     unsigned int node;
>>
>>-    cpumask_clear(&cpumask);
>>+    if (!zalloc_cpumask_var(&cpumask))
>>+        return;
>>+    if (!alloc_cpumask_var(&online_affinity))
>
> This doesn't get freed at the end of the function. Also, with the rest
> of the function being formatted properly, you ought to insert spaces
> after the initial and before the final parentheses of the if-s.
>
> Jan
>
>>+    {
>>+        free_cpumask_var(cpumask);
>>+        return;
>>+    }
>>+
>>+    online = cpupool_online_cpumask(d->cpupool);
>>     spin_lock(&d->node_affinity_lock);
>>
>>     for_each_vcpu ( d, v )
>>-        cpumask_or(&cpumask, &cpumask, v->cpu_affinity);
>>+    {
>>+        cpumask_and(online_affinity, v->cpu_affinity, online);
>>+        cpumask_or(cpumask, cpumask, online_affinity);
>>+    }
>>
>>     for_each_online_node ( node )
>>-        if ( cpumask_intersects(&node_to_cpumask(node), &cpumask) )
>>+        if ( cpumask_intersects(&node_to_cpumask(node), cpumask) )
>>             node_set(node, nodemask);
>>
>>     d->node_affinity = nodemask;
>>     spin_unlock(&d->node_affinity_lock);
>>+
>>+    free_cpumask_var(cpumask);
>> }
>>
>>
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.