On Sat 16-12-17 08:44:22, Matthew Wilcox wrote: > From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> > > Instead of putting the ifdef in the middle of the definition of struct > page, pull it forward to the rest of the ifdeffery around the SLUB > cmpxchg_double optimisation. > > Signed-off-by: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx> The definition of struct page looks better now. I think that slub.c needs some love as well. I haven't checked too deeply but it seems that it assumes counters to be unsigned long in some places. Maybe I've missed some ifdef-ery but using the native type would be much better Acked-by: Michal Hocko <mhocko@xxxxxxxx> > --- > include/linux/mm_types.h | 21 ++++++++------------- > 1 file changed, 8 insertions(+), 13 deletions(-) > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 8c3b8cea22ee..5521c9799c50 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -41,9 +41,15 @@ struct hmm; > */ > #ifdef CONFIG_HAVE_ALIGNED_STRUCT_PAGE > #define _struct_page_alignment __aligned(2 * sizeof(unsigned long)) > +#if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) > +#define _slub_counter_t unsigned long > #else > -#define _struct_page_alignment > +#define _slub_counter_t unsigned int > #endif > +#else /* !CONFIG_HAVE_ALIGNED_STRUCT_PAGE */ > +#define _struct_page_alignment > +#define _slub_counter_t unsigned int > +#endif /* !CONFIG_HAVE_ALIGNED_STRUCT_PAGE */ > > struct page { > /* First double word block */ > @@ -66,18 +72,7 @@ struct page { > }; > > union { > -#if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \ > - defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE) > - /* Used for cmpxchg_double in slub */ > - unsigned long counters; > -#else > - /* > - * Keep _refcount separate from slub cmpxchg_double data. > - * As the rest of the double word is protected by slab_lock > - * but _refcount is not. > - */ > - unsigned counters; > -#endif > + _slub_counter_t counters; > unsigned int active; /* SLAB */ > struct { /* SLUB */ > unsigned inuse:16; > -- > 2.15.1 > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@xxxxxxxxx. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a> -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>