• A
    page-flags: record page flag overlays explicitly · 0cad47cf
    Andy Whitcroft 提交于
    With the recent page flag reorganisation we have a single enum which
    defines the valid page flags and their values, nice and clear.  However
    there are a number of bits which are overloaded by different subsystems.
    Firstly there is PG_owner_priv_1 which is used by filesystems and by XEN.
    Secondly both SLOB and SLUB use a couple of extra page bits to manage
    internal state for pages they own; both overlay other bits.  All of these
    "aliases" are scattered about the source making it very hard for a reader
    to know if the bits are safe to rely on in all contexts; confusion here is
    bad.
    
    As we now have a single place where the bits are clearly assigned it makes
    sense to clarify the reuse of bits by making the aliases explicit and
    visible with the original bit assignments.  This patch creates explicit
    aliases within the enum itself for the overloaded bits, creates standard
    bit accessors PageFoo etc.  and uses those throughout.
    
    This version pulls the bit manipulation out to standard named page bit
    accessors as suggested by Christoph, it retains the explicit mapping to
    the overlayed bits.  A fusion of both ideas.  This has been SLUB and SLOB
    have been compile tested on x86_64 only, and SLUB boot tested.  If people
    feel this is worth doing then I can run a fuller set of testing.
    
    This patch:
    
    Some page flags are used for more than one purpose, for example
    PG_owner_priv_1.  Currently there are individual accessors for each user,
    each built using the common flag name far away from the bit definitions.
    This makes it hard to see all possible uses of these bits.
    
    Now that we have a single enum to generate the bit orders it makes sense
    to express overlays in the same place.  So create per use aliases for this
    bit in the main page-flags enum and use those in the accessors.
    
    [akpm@linux-foundation.org: fix xen]
    Signed-off-by: NAndy Whitcroft <apw@shadowen.org>
    Cc: Pekka Enberg <penberg@cs.helsinki.fi>
    Cc: Christoph Lameter <cl@linux-foundation.org>
    Cc: Matt Mackall <mpm@selenic.com>
    Cc: Nick Piggin <nickpiggin@yahoo.com.au>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Reviewed-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    0cad47cf
page-flags.h 10.3 KB