Re: 2.6.1 sendfile regression

From: Ram Pai
Date: Fri Jan 09 2004 - 19:55:57 EST


On Fri, 2004-01-09 at 16:21, Andrew Morton wrote:

> Probably it is the ill-advised readahead tweak. Does the below patch fix
> it up?
>
> diff -puN mm/filemap.c~a mm/filemap.c
> --- 25/mm/filemap.c~a Fri Jan 9 16:20:32 2004
> +++ 25-akpm/mm/filemap.c Fri Jan 9 16:20:46 2004
> @@ -596,12 +596,6 @@ void do_generic_mapping_read(struct addr
> offset = *ppos & ~PAGE_CACHE_MASK;
> last = (*ppos + desc->count) >> PAGE_CACHE_SHIFT;
>
> - /*
> - * Let the readahead logic know upfront about all
> - * the pages we'll need to satisfy this request
> - */
> - for (; index < last; index++)
> - page_cache_readahead(mapping, ra, filp, index);
> index = *ppos >> PAGE_CACHE_SHIFT;
>
> for (;;) {
>

There is a small mistake in Andrew's patch. The call to
page_cache_readahead() is missing.

Try this one.


*** linux-2.6.1-rc2/mm/filemap.c Fri Jan 9 00:47:04 2004
--- linux-2.6.1-rc2/mm/filemap.c.1 Fri Jan 9 00:46:43 2004
***************
*** 587,608 ****
read_actor_t actor)
{
struct inode *inode = mapping->host;
! unsigned long index, offset, last;
struct page *cached_page;
int error;

cached_page = NULL;
index = *ppos >> PAGE_CACHE_SHIFT;
offset = *ppos & ~PAGE_CACHE_MASK;
- last = (*ppos + desc->count) >> PAGE_CACHE_SHIFT;
-
- /*
- * Let the readahead logic know upfront about all
- * the pages we'll need to satisfy this request
- */
- for (; index < last; index++)
- page_cache_readahead(mapping, ra, filp, index);
- index = *ppos >> PAGE_CACHE_SHIFT;

for (;;) {
struct page *page;
--- 587,599 ----
read_actor_t actor)
{
struct inode *inode = mapping->host;
! unsigned long index, offset;
struct page *cached_page;
int error;

cached_page = NULL;
index = *ppos >> PAGE_CACHE_SHIFT;
offset = *ppos & ~PAGE_CACHE_MASK;

for (;;) {
struct page *page;
***************
*** 621,626 ****
--- 612,618 ----
}

cond_resched();
+ page_cache_readahead(mapping, ra, filp, index);

nr = nr - offset;
find_page:



> _
>
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/