mm: introduce _slub_counter_t
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. Link: http://lkml.kernel.org/r/20171220155552.15884-6-willy@infradead.org Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Christoph Lameter <cl@linux.com> Cc: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b26435a011
commit
0dd4da5b11
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user