[PATCH 1/2] readahead: split ondemand readahead interface into two functions

2007-06-13 Thread Fengguang Wu
Split ondemand readahead interface into two functions.  I think this
makes it a little clearer for non-readahead experts (like Rusty).

Internally they both call ondemand_readahead(), but the page argument
is changed to an obvious boolean flag.

Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Fengguang Wu <[EMAIL PROTECTED]>
---
 fs/ext3/dir.c  |4 -
 fs/ext4/dir.c  |4 -
 fs/splice.c|6 +-
 include/linux/mm.h |   20 ++---
 mm/filemap.c   |   10 ++--
 mm/readahead.c |   95 ++-
 6 files changed, 84 insertions(+), 55 deletions(-)

--- linux-2.6.22-rc4-mm2.orig/fs/ext3/dir.c
+++ linux-2.6.22-rc4-mm2/fs/ext3/dir.c
@@ -139,10 +139,10 @@ static int ext3_readdir(struct file * fi
pgoff_t index = map_bh.b_blocknr >>
(PAGE_CACHE_SHIFT - inode->i_blkbits);
if (!ra_has_index(&filp->f_ra, index))
-   page_cache_readahead_ondemand(
+   page_cache_sync_readahead(
sb->s_bdev->bd_inode->i_mapping,
&filp->f_ra, filp,
-   NULL, index, 1);
+   index, 1);
filp->f_ra.prev_index = index;
bh = ext3_bread(NULL, inode, blk, 0, &err);
}
--- linux-2.6.22-rc4-mm2.orig/fs/ext4/dir.c
+++ linux-2.6.22-rc4-mm2/fs/ext4/dir.c
@@ -138,10 +138,10 @@ static int ext4_readdir(struct file * fi
pgoff_t index = map_bh.b_blocknr >>
(PAGE_CACHE_SHIFT - inode->i_blkbits);
if (!ra_has_index(&filp->f_ra, index))
-   page_cache_readahead_ondemand(
+   page_cache_sync_readahead(
sb->s_bdev->bd_inode->i_mapping,
&filp->f_ra, filp,
-   NULL, index, 1);
+   index, 1);
filp->f_ra.prev_index = index;
bh = ext4_bread(NULL, inode, blk, 0, &err);
}
--- linux-2.6.22-rc4-mm2.orig/fs/splice.c
+++ linux-2.6.22-rc4-mm2/fs/splice.c
@@ -304,8 +304,8 @@ __generic_file_splice_read(struct file *
 * readahead/allocate the rest.
 */
if (spd.nr_pages < nr_pages)
-   page_cache_readahead_ondemand(mapping, &in->f_ra, in,
-   NULL, index, req_pages - spd.nr_pages);
+   page_cache_sync_readahead(mapping, &in->f_ra, in,
+   index, req_pages - spd.nr_pages);
 
while (spd.nr_pages < nr_pages) {
/*
@@ -360,7 +360,7 @@ __generic_file_splice_read(struct file *
page = pages[page_nr];
 
if (PageReadahead(page))
-   page_cache_readahead_ondemand(mapping, &in->f_ra, in,
+   page_cache_async_readahead(mapping, &in->f_ra, in,
page, index, req_pages - page_nr);
 
/*
--- linux-2.6.22-rc4-mm2.orig/include/linux/mm.h
+++ linux-2.6.22-rc4-mm2/include/linux/mm.h
@@ -1146,12 +1146,20 @@ int do_page_cache_readahead(struct addre
pgoff_t offset, unsigned long nr_to_read);
 int force_page_cache_readahead(struct address_space *mapping, struct file 
*filp,
pgoff_t offset, unsigned long nr_to_read);
-unsigned long page_cache_readahead_ondemand(struct address_space *mapping,
- struct file_ra_state *ra,
- struct file *filp,
- struct page *page,
- pgoff_t offset,
- unsigned long size);
+
+void page_cache_sync_readahead(struct address_space *mapping,
+  struct file_ra_state *ra,
+  struct file *filp,
+  pgoff_t offset,
+  unsigned long size);
+
+void page_cache_async_readahead(struct address_space *mapping,
+   struct file_ra_state *ra,
+   struct file *filp,
+   struct page *pg,
+   pgoff_t offset,
+   unsigned long size);
+
 unsigned long max_sane_readahead(unsigned long nr);
 
 /* Do stack extension */
--- linux-2.6.22-rc4-mm2.orig/mm/filemap.c
+++ linux-2.6.22-rc4-mm2/mm/filemap.c
@@ -913,15 +913,15 @@ void do_generic_mapping_read(struct addr
 find_page:
page = find_get_page(mapping, index);
if (!page) {
-   page_cache_readahead_ondemand(mapping,
-   &ra, fil

[PATCH 1/2] readahead: split ondemand readahead interface into two functions

2007-06-13 Thread Fengguang Wu
Split ondemand readahead interface into two functions.  I think this
makes it a little clearer for non-readahead experts (like Rusty).

Internally they both call ondemand_readahead(), but the page argument
is changed to an obvious boolean flag.

Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
Signed-off-by: Fengguang Wu <[EMAIL PROTECTED]>
---
 fs/ext3/dir.c  |4 -
 fs/ext4/dir.c  |4 -
 fs/splice.c|6 +-
 include/linux/mm.h |   20 ++---
 mm/filemap.c   |   10 ++--
 mm/readahead.c |   95 ++-
 6 files changed, 84 insertions(+), 55 deletions(-)

--- linux-2.6.22-rc4-mm2.orig/fs/ext3/dir.c
+++ linux-2.6.22-rc4-mm2/fs/ext3/dir.c
@@ -139,10 +139,10 @@ static int ext3_readdir(struct file * fi
pgoff_t index = map_bh.b_blocknr >>
(PAGE_CACHE_SHIFT - inode->i_blkbits);
if (!ra_has_index(&filp->f_ra, index))
-   page_cache_readahead_ondemand(
+   page_cache_sync_readahead(
sb->s_bdev->bd_inode->i_mapping,
&filp->f_ra, filp,
-   NULL, index, 1);
+   index, 1);
filp->f_ra.prev_index = index;
bh = ext3_bread(NULL, inode, blk, 0, &err);
}
--- linux-2.6.22-rc4-mm2.orig/fs/ext4/dir.c
+++ linux-2.6.22-rc4-mm2/fs/ext4/dir.c
@@ -138,10 +138,10 @@ static int ext4_readdir(struct file * fi
pgoff_t index = map_bh.b_blocknr >>
(PAGE_CACHE_SHIFT - inode->i_blkbits);
if (!ra_has_index(&filp->f_ra, index))
-   page_cache_readahead_ondemand(
+   page_cache_sync_readahead(
sb->s_bdev->bd_inode->i_mapping,
&filp->f_ra, filp,
-   NULL, index, 1);
+   index, 1);
filp->f_ra.prev_index = index;
bh = ext4_bread(NULL, inode, blk, 0, &err);
}
--- linux-2.6.22-rc4-mm2.orig/fs/splice.c
+++ linux-2.6.22-rc4-mm2/fs/splice.c
@@ -304,8 +304,8 @@ __generic_file_splice_read(struct file *
 * readahead/allocate the rest.
 */
if (spd.nr_pages < nr_pages)
-   page_cache_readahead_ondemand(mapping, &in->f_ra, in,
-   NULL, index, req_pages - spd.nr_pages);
+   page_cache_sync_readahead(mapping, &in->f_ra, in,
+   index, req_pages - spd.nr_pages);
 
while (spd.nr_pages < nr_pages) {
/*
@@ -360,7 +360,7 @@ __generic_file_splice_read(struct file *
page = pages[page_nr];
 
if (PageReadahead(page))
-   page_cache_readahead_ondemand(mapping, &in->f_ra, in,
+   page_cache_async_readahead(mapping, &in->f_ra, in,
page, index, req_pages - page_nr);
 
/*
--- linux-2.6.22-rc4-mm2.orig/include/linux/mm.h
+++ linux-2.6.22-rc4-mm2/include/linux/mm.h
@@ -1146,12 +1146,20 @@ int do_page_cache_readahead(struct addre
pgoff_t offset, unsigned long nr_to_read);
 int force_page_cache_readahead(struct address_space *mapping, struct file 
*filp,
pgoff_t offset, unsigned long nr_to_read);
-unsigned long page_cache_readahead_ondemand(struct address_space *mapping,
- struct file_ra_state *ra,
- struct file *filp,
- struct page *page,
- pgoff_t offset,
- unsigned long size);
+
+void page_cache_sync_readahead(struct address_space *mapping,
+  struct file_ra_state *ra,
+  struct file *filp,
+  pgoff_t offset,
+  unsigned long size);
+
+void page_cache_async_readahead(struct address_space *mapping,
+   struct file_ra_state *ra,
+   struct file *filp,
+   struct page *pg,
+   pgoff_t offset,
+   unsigned long size);
+
 unsigned long max_sane_readahead(unsigned long nr);
 
 /* Do stack extension */
--- linux-2.6.22-rc4-mm2.orig/mm/filemap.c
+++ linux-2.6.22-rc4-mm2/mm/filemap.c
@@ -913,15 +913,15 @@ void do_generic_mapping_read(struct addr
 find_page:
page = find_get_page(mapping, index);
if (!page) {
-   page_cache_readahead_ondemand(mapping,
-   &ra, fil