This code is working satisfactorily now.
ext2, the three modes of ext3 and reiserfs are solid. JFS has also
been tested - had a bit of a problem with JFS under heavy load, but
that appears to be unrelated to these changes. The loop driver
is much, much happier. The ramdisk driver is very sick, but that
is not due to these changes:
# mke2fs /dev/ram0
# mount /dev/ram0 /mnt/ram0
# cp -a /usr/src/dbench /mnt/ram0
# umount /mnt/ram0
# e2fsck -fy /dev/ram0 --->> many, many errors
Minix and sysvfs are broken - fixing those will happen shortly (there
doesn't seem to be a mkfs.sysv. Help.)
It's a very big patch. That is pretty unavoidable - a large chunk of
kernel functionality has been removed and new mechanisms (which are
largely just a revamp of the existing ones) were put in its place.
There's a *ton* of stuff still to be done. Smaller patches,
fortunately. It would help if anyone who reviews these changes could
check my todo list before larting me - it's probably already in the
plans.
I haven't done much benchmarking at all - a number of design changes
still need to be made before tuning and smoothing is appropriate.
And, really, some VM decisions need to be made. Generally, throughput
seems to be improved.
At http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.8/ the following
files may be found:
ttd
The 86-entry todo list.
pagecache-screwup.patch
Fix ratcache locking bug.
per-cpu-pages.patch
Fun hack to amortise zone_t.lock costs for Anton's testing.
Not really being proposed for inclusion, but it works well.
dallocbase-10-page_alloc_fail.patch
Debug stuff.
dallocbase-35-pageprivate_fixes.patch
Fix JFS compilation
dallocbase-55-ext2_dir.patch
Teach ext2 to not use directory data outside i_size
dallocbase-60-page_accounting.patch
Global locked and dirty page accounting
ratcache-pf_memalloc.patch
Make the rat not consume all memory on the swapout path.
mempool-node.patch
Make mempool not alter the objects which it is managing
readahead-fixes.patch
Allow zero-length readahead, make readahead initialisation sane.
unplug-fix.patch
Might fix a lockup which I observed a single time in a week's heavy
thrashing. Everything died; a process was stuck in
get_request_wait() while holding fs locks. There were many
outstanding requests. Why had I/O not been started? I assume it was
a missing unplug. Very, very, very hard to reproduce.
dallocbase-70-writeback.patch
The core writeback stuff. Removes the buffer LRU and hash table,
implements address_space-based writeback.
Splits half of fs/inode.c into fs/fs-writeback.c.
Moves most of the page flag handling out of mm.h into page-flags.h
address_space writeback functions in mm/page-writeback.c
dallocbase-80-unused_list.patch
Remove the buffer unused_list, replace with a mempool.
The rest hasn't been tested in two weeks and is probably busted:
dalloc-10-syncalloc_ext3.patch
dalloc-20-syncalloc_ext2.patch
Turn on multipage VM writeback for ext2, ext3.
dalloc-30-dellalloc_core.patch
Delayed allocate core
dalloc-40-ext2.patch
Implement delayed allocation in ext2
mpage-10-biobits.patch
BIO support for multipage writeback and readahead
mpage-20-core.patch
Multipage I/O core
mpage-30-ext2.patch
Multipage for ext2
mpage-40-ext3.patch
Teach ext3 about generic_writeback_mapping() interface change.
tuning-10-request.patch
get_request() starvation fix.
tuning-20-ext2-preread-inode.patch
ext2 tuning.
tuning-30-read_latency.patch
Disk read latency hacks.
On Sun, Apr 21, 2002 at 11:28:28PM -0700, Andrew Morton wrote:
> Minix and sysvfs are broken - fixing those will happen shortly
I will do sysvfs - there's a large number of changes pending and it'd
rather appliy them in the right order..
> (there
> doesn't seem to be a mkfs.sysv. Help.)
Working on it, but got sidetracked a little..
Christoph Hellwig wrote:
>
> On Sun, Apr 21, 2002 at 11:28:28PM -0700, Andrew Morton wrote:
> > Minix and sysvfs are broken - fixing those will happen shortly
>
> I will do sysvfs - there's a large number of changes pending and it'd
> rather appliy them in the right order..
>
Thanks. It looks to be very similar to the ext2 changes.
We also need to not go BUG() if ->prepare_write returns
an error. It's pretty unlikely - it'd need an IO error
against an indirect which had already been successfully
read and then evicted (I think). But proper recovery there
would be better.
-
Andrew Morton wrote:
>This code is working satisfactorily now.
>
>
>At http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.8/ the following
>files may be found:
>
Is there one big patch, or a tarball of the patches,
available somewhere?
Joe