linux-kernelorg-stable/fs
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
..
9p v9fs: don't use primary fid when removing file 2007-04-24 08:23:08 -07:00
adfs
affs
afs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
autofs
autofs4 [PATCH] autofs4: fix race in unhashed dentry code 2007-04-12 15:31:42 -07:00
befs
bfs
cifs [CIFS] Fix typo in cifs readme from previous commit 2007-05-05 22:08:06 +00:00
coda
configfs remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
cramfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
debugfs remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
devpts
dlm remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
ecryptfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
efs
exportfs
ext2 mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
ext3 [PATCH] revert "retries in ext3_prepare_write() violate ordering requirements" 2007-04-02 10:06:08 -07:00
ext4 [PATCH] revert "retries in ext4_prepare_write() violate ordering requirements" 2007-04-02 10:06:08 -07:00
fat
freevxfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
fuse remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
gfs2 remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
hfs
hfsplus
hostfs [PATCH] uml: hostfs variable renaming 2007-03-29 08:22:25 -07:00
hpfs
hppfs
hugetlbfs Make page->private usable in compound pages 2007-05-07 12:12:53 -07:00
isofs
jbd
jbd2
jffs2 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2007-04-27 19:16:19 +01:00
jfs Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6 2007-02-26 11:44:51 -08:00
lockd SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
minix mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
msdos
ncpfs ncpfs: make sure server connection survives a kill 2007-03-06 13:26:27 +01:00
nfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
nfs_common
nfsd SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
nls
ntfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
ocfs2 mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
openpromfs
partitions mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
proc smaps: add clear_refs file to clear reference 2007-05-07 12:12:52 -07:00
qnx4
ramfs
reiserfs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
romfs
smbfs [PATCH] smbfs: double free memory corruption 2007-03-16 19:25:05 -07:00
sysfs remove "struct subsystem" as it is no longer needed 2007-05-02 18:57:59 -07:00
sysv mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
udf
ufs mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
vfat
xfs [PATCH] Make XFS workqueues nonfreezable 2007-03-22 19:39:06 -07:00
Kconfig Merge git://git.linux-nfs.org/pub/linux/nfs-2.6 2007-05-04 19:55:11 -07:00
Kconfig.binfmt
Makefile
aio.c [PATCH] aio: remove bare user-triggerable error printk 2007-03-27 17:53:25 -07:00
attr.c
bad_inode.c
binfmt_aout.c
binfmt_elf.c [PATCH] fix page leak during core dump 2007-04-02 10:06:08 -07:00
binfmt_elf_fdpic.c [PATCH] fix page leak during core dump 2007-04-02 10:06:08 -07:00
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio.c [BLOCK] Don't pin lots of memory in mempools 2007-04-30 09:08:17 +02:00
block_dev.c
buffer.c fs: buffer don't PageUptodate without page locked 2007-05-07 12:12:51 -07:00
char_dev.c [PATCH] remove protection of LANANA-reserved majors 2007-04-04 21:12:47 -07:00
compat.c [PATCH] x86-64: Print type and size correctly for unknown compat ioctls 2007-05-02 19:27:21 +02:00
compat_ioctl.c [PATCH] x86-64: Shut up warnings for vfat compat ioctls on other file systems 2007-05-02 19:27:21 +02:00
dcache.c
dcookies.c
direct-io.c
dnotify.c
dquot.c
drop_caches.c
eventpoll.c
exec.c exec.c: fix coredump to pipe problem and obscure "security hole" 2007-04-17 16:36:26 -07:00
fcntl.c
fifo.c
file.c
file_table.c
filesystems.c
fs-writeback.c
generic_acl.c
inode.c
inotify.c
inotify_user.c
internal.h
ioctl.c
ioprio.c
libfs.c [PATCH] shmem and simple const super_operations 2007-03-05 07:57:51 -08:00
locks.c
mbcache.c
mpage.c
namei.c mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
namespace.c
nfsctl.c
no-block.c
open.c
pipe.c
pnode.c
pnode.h
posix_acl.c
quota.c
quota_v1.c
quota_v2.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
splice.c [PATCH] splice: partial write fix 2007-03-29 14:26:42 +02:00
stack.c
stat.c
super.c the overdue removal of the mount/umount uevents 2007-04-27 10:57:31 -07:00
sync.c [PATCH] Turn do_sync_file_range() into do_sync_mapping_range() 2007-04-26 15:02:26 -07:00
utimes.c
xattr.c
xattr_acl.c