Messages in this thread | | | Date | Wed, 4 Aug 2010 11:15:29 -0500 (CDT) | From | Christoph Lameter <> | Subject | Re: [S+Q3 03/23] slub: Use a constant for a unspecified node. |
| |
On Tue, 3 Aug 2010, David Rientjes wrote:
> > static struct page *get_partial(struct kmem_cache *s, gfp_t flags, int node) > > { > > struct page *page; > > - int searchnode = (node == -1) ? numa_node_id() : node; > > + int searchnode = (node == NUMA_NO_NODE) ? numa_node_id() : node; > > > > page = get_partial_node(get_node(s, searchnode)); > > if (page || (flags & __GFP_THISNODE) || node != -1) > > This has a merge conflict with 2.6.35 since it has this: > > page = get_partial_node(get_node(s, searchnode)); > if (page || (flags & __GFP_THISNODE)) > return page; > > return get_any_partial(s, flags); > > so what happened to the dropped check for returning get_any_partial() when > node != -1? I added the check for benchmarking.
Strange no merge conflict here. Are you sure you use upstream?
GFP_THISNODE does not matter too much. If page == NULL then we failed to allocate a page on a specific node and have to either give up (and then extend the slab) or take a page from another node.
We always have give up to go to the page allocator if GFP_THIS_NODE was set. The modification to additionally also go to the page allocator if a node was just set even without GFP_THISNODE. So checking for GFP_THISNODE does not make sense anymore.
| |