Re: [PATCH 1/3] slab common: Add functions for kmem_cache_node access

David Rientjes
2014-06-17T21:45:15Z

On Tue, 17 Jun 2014, Andrew Morton wrote:

> On Wed, 11 Jun 2014 14:15:11 -0500 Christoph Lameter <cl@linux.com> wrote:
>
> > These functions allow to eliminate repeatedly used code in both
> > SLAB and SLUB and also allow for the insertion of debugging code
> > that may be needed in the development process.
> >
> > ...
> >
> > --- linux.orig/mm/slab.h 2014-06-10 14:18:11.506956436 -0500
> > +++ linux/mm/slab.h 2014-06-10 14:21:51.279893231 -0500
> > @@ -294,5 +294,18 @@ struct kmem_cache_node {
> >
> > };
> >
> > +static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node)
> > +{
> > + return s->node[node];
> > +}
> > +
> > +/*
> > + * Iterator over all nodes. The body will be executed for each node that has
> > + * a kmem_cache_node structure allocated (which is true for all online nodes)
> > + */
> > +#define for_each_kmem_cache_node(__s, __node, __n) \
> > + for (__node = 0; __n = get_node(__s, __node), __node < nr_node_ids; __node++) \
> > + if (__n)
>
> Clueless newbs would be aided if this comment were to describe the
> iterator's locking requirements.
>

There are no locking requirements, if the nodelist is initialized then we
are good to go.