From: Juergen Gross <juergen.gross@ts.fujitsu.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH 2 of 3] switch to dynamically allocated cpumask in domain_update_node_affinity()
Date: Tue, 24 Jan 2012 10:56:35 +0100 [thread overview]
Message-ID: <4F1E8053.5090104@ts.fujitsu.com> (raw)
In-Reply-To: <1327397591.24561.166.camel@zakaz.uk.xensource.com>
On 01/24/2012 10:33 AM, Ian Campbell wrote:
> On Tue, 2012-01-24 at 05:54 +0000, Juergen Gross wrote:
>> # HG changeset patch
>> # User Juergen Gross<juergen.gross@ts.fujitsu.com>
>> # Date 1327384410 -3600
>> # Node ID 08232960ff4bed750d26e5f1ff53972fee9e0130
>> # Parent 99f98e501f226825fbf16f6210b4b7834dff5df1
>> switch to dynamically allocated cpumask in
>> domain_update_node_affinity()
>>
>> cpumasks should rather be allocated dynamically.
>>
>> Signed-off-by: juergen.gross@ts.fujitsu.com
>>
>> diff -r 99f98e501f22 -r 08232960ff4b xen/common/domain.c
>> --- a/xen/common/domain.c Tue Jan 24 06:53:06 2012 +0100
>> +++ b/xen/common/domain.c Tue Jan 24 06:53:30 2012 +0100
>> @@ -333,23 +333,27 @@ struct domain *domain_create(
>>
>> void domain_update_node_affinity(struct domain *d)
>> {
>> - cpumask_t cpumask;
>> + cpumask_var_t cpumask;
>> nodemask_t nodemask = NODE_MASK_NONE;
>> struct vcpu *v;
>> unsigned int node;
>>
>> - cpumask_clear(&cpumask);
>> + if ( !zalloc_cpumask_var(&cpumask) )
>> + return;
> If this ends up always failing we will never set node_affinity to
> anything at all. Granted that is already a pretty nasty situation to be
> in but perhaps setting the affinity to NODE_MASK_ALL on failure is
> slightly more robust?
Hmm, I really don't know.
node_affinity is only used in alloc_heap_pages(), which will fall back to other
nodes if no memory is found on those nodes.
OTOH this implementation might change in the future.
The question is whether node_affinity should rather contain a subset or a
superset of the nodes the domain is running on.
What should be done if allocating a cpumask fails later? Should node_affinity
be set to NODE_MASK_ALL/NONE or should it be left untouched assuming a real
change is a rare thing to happen?
Juergen
>> +
>> spin_lock(&d->node_affinity_lock);
>>
>> for_each_vcpu ( d, v )
>> - cpumask_or(&cpumask,&cpumask, v->cpu_affinity);
>> + cpumask_or(cpumask, cpumask, v->cpu_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@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
>
--
Juergen Gross Principal Developer Operating Systems
PDG ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions e-mail: juergen.gross@ts.fujitsu.com
Domagkstr. 28 Internet: ts.fujitsu.com
D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html
next prev parent reply other threads:[~2012-01-24 9:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-24 5:54 [PATCH 0 of 3] Reflect cpupool in numa node affinity (v4) Juergen Gross
2012-01-24 5:54 ` [PATCH 1 of 3] introduce and use common macros for selecting cpupool based cpumasks Juergen Gross
2012-01-24 5:54 ` [PATCH 2 of 3] switch to dynamically allocated cpumask in domain_update_node_affinity() Juergen Gross
2012-01-24 9:33 ` Ian Campbell
2012-01-24 9:56 ` Juergen Gross [this message]
2012-01-24 10:04 ` Ian Campbell
2012-01-24 5:54 ` [PATCH 3 of 3] reflect cpupool in numa node affinity Juergen Gross
-- strict thread matches above, loose matches on Subject: below --
2012-01-24 10:06 [PATCH 0 of 3] Reflect cpupool in numa node affinity (v5) Juergen Gross
2012-01-24 10:06 ` [PATCH 2 of 3] switch to dynamically allocated cpumask in domain_update_node_affinity() Juergen Gross
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F1E8053.5090104@ts.fujitsu.com \
--to=juergen.gross@ts.fujitsu.com \
--cc=Ian.Campbell@citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.