Re: [PATCH 2/8] mm: De-indent struct page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat 16-12-17 08:44:19, Matthew Wilcox wrote:
> From: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>
> 
> I found the struct { union { struct { union { struct { } } } } }
> layout rather confusing.  Fortunately, there is an easier way to write
> this.  The innermost union is of four things which are the size of an
> int, so the ones which are used by slab/slob/slub can be pulled up
> two levels to be in the outermost union with 'counters'.  That leaves
> us with struct { union { struct { atomic_t; atomic_t; } } } which
> has the same layout, but is easier to read.

This is where the pahole output would be really helpeful. The patch
looks OK, I will double check with a fresh brain tomorrow (with the rest
of the series), though.

> Signed-off-by: Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>
> ---
>  include/linux/mm_types.h | 40 +++++++++++++++++++---------------------
>  1 file changed, 19 insertions(+), 21 deletions(-)
> 
> diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
> index 4509f0cfaf39..27973166af28 100644
> --- a/include/linux/mm_types.h
> +++ b/include/linux/mm_types.h
> @@ -84,28 +84,26 @@ struct page {
>  		 */
>  		unsigned counters;
>  #endif
> -		struct {
> +		unsigned int active;		/* SLAB */
> +		struct {			/* SLUB */
> +			unsigned inuse:16;
> +			unsigned objects:15;
> +			unsigned frozen:1;
> +		};
> +		int units;			/* SLOB */
> +
> +		struct {			/* Page cache */
> +			/*
> +			 * Count of ptes mapped in mms, to show when
> +			 * page is mapped & limit reverse map searches.
> +			 *
> +			 * Extra information about page type may be
> +			 * stored here for pages that are never mapped,
> +			 * in which case the value MUST BE <= -2.
> +			 * See page-flags.h for more details.
> +			 */
> +			atomic_t _mapcount;
>  
> -			union {
> -				/*
> -				 * Count of ptes mapped in mms, to show when
> -				 * page is mapped & limit reverse map searches.
> -				 *
> -				 * Extra information about page type may be
> -				 * stored here for pages that are never mapped,
> -				 * in which case the value MUST BE <= -2.
> -				 * See page-flags.h for more details.
> -				 */
> -				atomic_t _mapcount;
> -
> -				unsigned int active;		/* SLAB */
> -				struct {			/* SLUB */
> -					unsigned inuse:16;
> -					unsigned objects:15;
> -					unsigned frozen:1;
> -				};
> -				int units;			/* SLOB */
> -			};
>  			/*
>  			 * Usage count, *USE WRAPPER FUNCTION* when manual
>  			 * accounting. See page_ref.h
> -- 
> 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>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux