From: Nick Piggin nfs_writepage() refuses to write back mapped pages at all on the page reclaim path, causing systems to get locked up when there's a lot of dirty mmapped data around. The patch changes NFS so that it will start I/O against these pages. The code as it stands is designed to defer writeout to pdflush which can do larger, more efficient I/Os. But there shouldn't be much traffic by this path, and going slow is better than not going at all. Patch originally from Trond Myklebust Signed-off-by: Andrew Morton --- 25-akpm/fs/nfs/write.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff -puN fs/nfs/write.c~nfs-writepage-fix fs/nfs/write.c --- 25/fs/nfs/write.c~nfs-writepage-fix Tue Jun 1 16:21:52 2004 +++ 25-akpm/fs/nfs/write.c Tue Jun 1 16:21:52 2004 @@ -314,7 +314,7 @@ do_it: if (err >= 0) { err = 0; if (wbc->for_reclaim) - err = WRITEPAGE_ACTIVATE; + nfs_flush_inode(inode, 0, 0, FLUSH_STABLE); } } else { err = nfs_writepage_sync(NULL, inode, page, 0, @@ -327,8 +327,7 @@ do_it: } unlock_kernel(); out: - if (err != WRITEPAGE_ACTIVATE) - unlock_page(page); + unlock_page(page); if (inode_referenced) iput(inode); return err; _