Re: [patch 2/2] cpusets: add interleave_over_allowed option

David Rientjes
2007-10-26T01:30:31Z

On Thu, 25 Oct 2007, Paul Jackson wrote:

> Can we call this "memory_spread_user" instead, or something else
> matching "memory_spread_*" ?
>

Sounds better. I was hoping somebody was going to come forward with an
alternative that sounded better than interleave_over_allowed.

> How about instead of your current_cpuset_interleaved_mems() routine
> that returns a nodemask, rather have a routine that returns a Boolean,
> indicating whether this new flag is set, used as in:
> if (cpuset_is_memory_spread_user())
> tmp = cpuset_current_mems_allowed();
> else
> nodes_remap(tmp, pol->v.nodes, *mpolmask, *newmask);
> pol->v.nodes = tmp;
>

That sounds reasonable, it will simply be a wrapper around
is_interleave_over_allowed() or what we're now calling is_spread_user().

> The existing kernel code for mm/mempolicy.c:mpol_rebind_policy()
> looks buggy to me. The node_remap() call for the MPOL_INTERLEAVE
> case seems like it should come before, not after, updating mpolmask
> to the newmask. Fixing that, and consolidating the multiple lines
> doing "*mpolmask = *newmask" for each case, into a single such line
> at the end of the switch(){} statement, results in the following
> patch. Could you confirm my suspicions and push this one too.
> It should be a part of your patch set, so we don't waste Andrew's
> time resolving the inevitable patch collisions we'll see otherwise.
>

For setting current->il_next, both cases work but yours will be better
balanced for the next interleaved allocation. I'll apply it to my
patchset.

Thanks for the review.

David