diff -Nru mm/filemap.c.orig mm/filemap.c --- mm/filemap.c.orig Mon Dec 9 18:27:41 2002 +++ mm/filemap.c Tue Dec 10 17:13:41 2002 @@ -1550,9 +1550,13 @@ retval = mapping->a_ops->direct_IO(rw, inode, iobuf, (offset+progress) >> blocksize_bits, blocksize); - if (rw == READ && retval > 0) + if (rw == READ && retval > 0) { + int i; + for (i=0; i< iobuf->nr_pages; i++) + flush_page_to_ram(iobuf->maplist[i]); mark_dirty_kiobuf(iobuf, retval); - + } + if (retval >= 0) { count -= retval; buf += retval;