From: Marcelo Tosatti 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 Signed-off-by: Andrew Morton --- 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); _