
From: Marcelo Tosatti <marcelo.tosatti@cyclades.com>

filemap_fdatawait() calls wait_on_page_writeback_range() with -1 as "end"
parameter.  This is not needed since we know the EOF from the inode.  Use
that instead.

Signed-off-by: Marcelo Tosatti <marcelo.tosatti@cyclades.com> 
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/mm/filemap.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletion(-)

diff -puN mm/filemap.c~small-wait_on_page_writeback_range-optimization mm/filemap.c
--- 25/mm/filemap.c~small-wait_on_page_writeback_range-optimization	2004-09-02 15:43:58.615376464 -0700
+++ 25-akpm/mm/filemap.c	2004-09-02 15:45:29.240599336 -0700
@@ -293,7 +293,13 @@ EXPORT_SYMBOL(sync_page_range);
  */
 int filemap_fdatawait(struct address_space *mapping)
 {
-	return wait_on_page_writeback_range(mapping, 0, -1);
+	loff_t i_size = i_size_read(mapping->host);
+
+	if (i_size == 0)
+		return 0;
+
+	return wait_on_page_writeback_range(mapping, 0,
+				(i_size - 1) >> PAGE_CACHE_SHIFT);
 }
 EXPORT_SYMBOL(filemap_fdatawait);
 
_
