- use ll_rw_block().

- use READA

- export it to modules.


 fs/buffer.c |   17 +++--------------
 1 files changed, 3 insertions(+), 14 deletions(-)

diff -puN fs/buffer.c~breadahead-tweaks fs/buffer.c
--- 25/fs/buffer.c~breadahead-tweaks	2003-07-05 12:46:09.000000000 -0700
+++ 25-akpm/fs/buffer.c	2003-07-05 12:46:09.000000000 -0700
@@ -1457,24 +1457,13 @@ EXPORT_SYMBOL(__getblk);
 /*
  * Do async read-ahead on a buffer..
  */
-void
-__breadahead(struct block_device *bdev, sector_t block, int size)
+void __breadahead(struct block_device *bdev, sector_t block, int size)
 {
 	struct buffer_head *bh = __getblk(bdev, block, size);
-	if (!test_set_buffer_locked(bh)) {
-		if (!buffer_uptodate(bh)) {
-			/*
-			 * This eats the bh count from __getblk() and
-			 * unlocks when the read is done.
-			 */
-			bh->b_end_io = end_buffer_io_sync;
-			submit_bh(READ, bh);
-			return;
-		}
-		unlock_buffer(bh);
-	}
+	ll_rw_block(READA, 1, &bh);
 	brelse(bh);
 }
+EXPORT_SYMBOL(__breadahead);
 
 /**
  *  __bread() - reads a specified block and returns the bh

_