linux/arch
Christoph Lameter d85f33855c Make page->private usable in compound pages
If we add a new flag so that we can distinguish between the first page and the
tail pages then we can avoid to use page->private in the first page.
page->private == page for the first page, so there is no real information in
there.

Freeing up page->private makes the use of compound pages more transparent.
They become more usable like real pages.  Right now we have to be careful f.e.
 if we are going beyond PAGE_SIZE allocations in the slab on i386 because we
can then no longer use the private field.  This is one of the issues that
cause us not to support debugging for page size slabs in SLAB.

Having page->private available for SLUB would allow more meta information in
the page struct.  I can probably avoid the 16 bit ints that I have in there
right now.

Also if page->private is available then a compound page may be equipped with
buffer heads.  This may free up the way for filesystems to support larger
blocks than page size.

We add PageTail as an alias of PageReclaim.  Compound pages cannot currently
be reclaimed.  Because of the alias one needs to check PageCompound first.

The RFC for the this approach was discussed at
http://marc.info/?t=117574302800001&r=1&w=2

[nacc@us.ibm.com: fix hugetlbfs]
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-07 12:12:53 -07:00
..
alpha Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
arm Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-05-06 13:20:10 -07:00
arm26 [PATCH] x86: deflate stack usage in lib/inflate.c 2007-05-02 19:27:15 +02:00
avr32 AVR32: Remove useless config option "GENERIC_BUST_SPINLOCK". 2007-04-27 13:45:26 +02:00
cris [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
frv SLUB core 2007-05-07 12:12:53 -07:00
h8300 [PATCH] Declare init_irq_proc before we use it. 2007-02-19 14:21:50 -08:00
i386 SLUB core 2007-05-07 12:12:53 -07:00
ia64 Make page->private usable in compound pages 2007-05-07 12:12:53 -07:00
m32r [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
m68k m68k: export csum_partial_copy_from_user 2007-05-04 17:59:08 -07:00
m68knommu PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
mips RM9000 serial driver 2007-05-07 12:12:50 -07:00
parisc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
powerpc PowerPC: Disable SLUB for configurations in which slab page structs are modified 2007-05-07 12:12:53 -07:00
ppc Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
s390 Introduce CONFIG_HAS_DMA 2007-05-07 12:12:51 -07:00
sh [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sh64 Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
sparc [PATCH] x86: Allow percpu variables to be page-aligned 2007-05-02 19:27:12 +02:00
sparc64 Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00
um [PATCH] i386: Add an option for the VIA C7 which sets appropriate L1 cache 2007-05-02 19:27:05 +02:00
v850 kbuild: Replace remaining "depends" with "depends on" 2007-02-17 19:05:24 +01:00
x86_64 Revert "[PATCH] x86: __pa and __pa_symbol address space separation" 2007-05-07 08:44:24 -07:00
xtensa Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6 2007-05-05 14:55:20 -07:00