--- linux-2.6.9-np/mm/filemap.c 2004-08-29 14:03:40.989353448 +0200 +++ linux-2.6/mm/filemap.c 2004-08-29 13:48:37.000000000 +0200 @@ -798,6 +798,15 @@ page_not_up_to_date: /* Did somebody else fill it already? */ if (PageUptodate(page)) { unlock_page(page); + nr = PAGE_CACHE_SIZE; + if (index == end_index) { + nr = isize & ~PAGE_CACHE_MASK; + if (nr <= offset) { + page_cache_release(page); + goto out; + } + } + nr = nr - offset; goto page_ok; }