From: Nick Piggin <nickpiggin@yahoo.com.au>
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.
Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
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,
}
unlock_kernel();
out:
- if (err != WRITEPAGE_ACTIVATE)
- unlock_page(page);
+ unlock_page(page);
if (inode_referenced)
iput(inode);
return err;