Subject: [PATCH] NFS: Direct reads and writes need to flush dirty cache pages Other parts of the NFS client invoke nfs_wb_all() when they want to flush dirty cache pages. The direct path needs to do that, too. Signed-off-by: Chuck Lever Signed-off-by: Trond Myklebust --- fs/nfs/direct.c | 4 ++++ 1 files changed, 4 insertions(+) diff -X /home/cel/src/linux/dont-diff -Naurp 14-nfs-direct-parallel-read/fs/nfs/direct.c 15-nfs-direct-wb-all/fs/nfs/direct.c --- 14-nfs-direct-parallel-read/fs/nfs/direct.c 2004-10-21 10:43:30.075012000 -0400 +++ 15-nfs-direct-wb-all/fs/nfs/direct.c 2004-10-21 10:48:30.465703000 -0400 @@ -679,6 +679,8 @@ nfs_file_direct_read(struct kiocb *iocb, if (mapping->nrpages) { retval = filemap_fdatawrite(mapping); if (retval == 0) + retval = nfs_wb_all(inode); + if (retval == 0) retval = filemap_fdatawait(mapping); if (retval) goto out; @@ -768,6 +770,8 @@ nfs_file_direct_write(struct kiocb *iocb if (mapping->nrpages) { retval = filemap_fdatawrite(mapping); if (retval == 0) + retval = nfs_wb_all(inode); + if (retval == 0) retval = filemap_fdatawait(mapping); if (retval) goto out;