[lkml]   [2003]   [Feb]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
*****      if you don't hack the kernel, stop reading now      *****

pgcl is a forward port and/or 2.5.x (re)implementation of page
clustering, originally implemented by Hugh Dickins for 2.4.7.
Don't blame Hugh -- all the bugs are mine and his code worked.

This patch is currently in a WIP phase of programming with various
relatively severe bugs getting worked out, though I've yet to encounter
non-fsck-recoverable filesystem corruption with remotely current sources.
Don't bother trying if you aren't prepared to debug.

The patch is available from:

The patches are incremental and "unpackaged". You will have to fetch
the incremental pgcl-2.5.62-1A, pgcl-2.5.62-1B, etc. diffs to apply
on top of pgcl-2.5.62-1 etc. Well, pgcl-2.5.63-1 is current, but you
get the idea.

If you change PAGE_SIZE back to MMUPAGE_SIZE, you shouldn't be able
to observe any difference in behavior. If you do, send me either a
patch or a comprehensible(!) bug report. This is _not_ for naive users.

Known issues:
(0) This code is currently x86-32 only. Dropping something to say
PAGE_SIZE == MMUPAGE_SIZE into other arches's code is trivial
but largely meaningless.
(1) aio is 100% untested, and probably broken.
(2) Unusual corner cases appear to show binary compatibility breakage.
This varies by distro; by and large /bin/sh should run, and
most of the apps needed for initscripts run. Worse comes to
worse init=/bin/sash or some other static executable should run,
though if there's a bug in initial user stack setup that could
defeat even static executables used for init=...
(3) SCSI ioctl's are probably broken, but 100% untested.
(4) Various drivers attempt to vmalloc() and/or ioremap() excessively
large regions now that PAGE_SIZE has changed. They may fail
during registration, but nothing interesting at runtime.
(5) Some machines stopped booting probably because of either arch code
missed during the audits or flat out bugs.
(6) I saw some spontaneous reboots ca. 2.5.59 on a stinkpad. The
source of the stuff was never tracked down, and no recent boots.
(7) L3 pagetables aren't fixed up to prevent internal fragmentation.
This means PAGE_SIZE will get allocated for every 4KB of
L3 pagetables required for a given workload.
(8) Anonymous pagefault handling hasn't been fixed up to prevent
internal fragmentation. This means that most of the time,
PAGE_SIZE will get allocated for every 4KB of anonymous
memory faulted in. Easily fixable, but not merged due to
the fact it provokes bugs more easily with some of the
get_user_pages() users.
(9) Various pagetable indexing algorithms were "sort of needlessly"
swizzled around to deal with non-contiguous pagetables set
up by page_table_init() and friends. The arch code should
be eventually fixed up to make the rest of the world happy
and the changes to core/whatever code made for it reverted.

-- wli
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:33    [W:0.022 / U:0.948 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site