2002-04-22 06:28:23

by Andrew Morton

[permalink] [raw]
Subject: updated writeback patches for 2.5.8


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.


2002-04-22 06:42:38

by Christoph Hellwig

[permalink] [raw]
Subject: Re: updated writeback patches for 2.5.8

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..

2002-04-22 06:53:33

by Andrew Morton

[permalink] [raw]
Subject: Re: updated writeback patches for 2.5.8

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.

-

2002-04-22 07:07:27

by Joe

[permalink] [raw]
Subject: Re: updated writeback patches for 2.5.8

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