[PATCH] ext3_readdir: use generic readahead
authorAndrew Morton <akpm@osdl.org>
Thu, 23 Mar 2006 11:00:11 +0000 (03:00 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 23 Mar 2006 15:38:09 +0000 (07:38 -0800)
commitd8733c2956968a01394a4d2a9e97a8b431a78776
tree9743c9020eb5193efa4a0f102b3a7eb1d999c4fd
parentb8e31edc10d160a8bf2159541d9d12f2079a0887
[PATCH] ext3_readdir: use generic readahead

Linus points out that ext3_readdir's readahead only cuts in when
ext3_readdir() is operating at the very start of the directory.  So for large
directories we end up performing no readahead at all and we suck.

So take it all out and use the core VM's page_cache_readahead().  This means
that ext3 directory reads will use all of readahead's dynamic sizing goop.

Note that we're using the directory's filp->f_ra to hold the readahead state,
but readahead is actually being performed against the underlying blockdev's
address_space.  Fortunately the readahead code is all set up to handle this.

Tested with printk.  It works.  I was struggling to find a real workload which
actually cared.

(The patch also exports page_cache_readahead() to GPL modules)

Cc: "Stephen C. Tweedie" <sct@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/ext3/dir.c
fs/ext3/inode.c
include/linux/ext3_fs.h
mm/readahead.c