Avoid duplicate _count variables in page_struct

Restructure the union / struct cascade in struct page so that
we only have one definition of _count.

Tested-by: Hugh Dickins <hughd@google.com>
Signed-off-by: Christoph Lameter <cl@linux.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Christoph Lameter 2011-07-14 12:48:14 -05:00 committed by Pekka Enberg
parent 3adf004d82
commit 013e896373

View File

@ -49,30 +49,31 @@ struct page {
* see PAGE_MAPPING_ANON below.
*/
/* Second double word */
union {
struct {
struct {
union {
pgoff_t index; /* Our offset within mapping. */
atomic_t _mapcount; /* Count of ptes mapped in mms,
void *freelist; /* slub first free object */
};
union {
/* Used for cmpxchg_double in slub */
unsigned long counters;
struct {
union {
atomic_t _mapcount; /* Count of ptes mapped in mms,
* to show when page is mapped
* & limit reverse map searches.
*/
atomic_t _count; /* Usage count, see below. */
};
struct { /* SLUB cmpxchg_double area */
void *freelist;
union {
unsigned long counters;
struct {
unsigned inuse:16;
unsigned objects:15;
unsigned frozen:1;
/*
* Kernel may make use of this field even when slub
* uses the rest of the double word!
*/
atomic_t _count;
struct {
unsigned inuse:16;
unsigned objects:15;
unsigned frozen:1;
};
};
atomic_t _count; /* Usage count, see below. */
};
};
};