NFS: Try to commit unstable writes in nfs_release_page()
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 26 Jan 2010 20:41:53 +0000 (15:41 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 23 Feb 2010 15:37:50 +0000 (07:37 -0800)
commit 82be934a59ff891cac598727e5a862ba2b9d1fac upstream.

If someone calls nfs_release_page(), we presumably already know that the
page is clean, however it may be holding an unstable write.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/nfs/file.c

index f5fdd39e037a49ea5073aa32d19a5cb884d64a76..393d40fd7eb9d8fd5dd5d784fc94b741d94e3912 100644 (file)
@@ -486,6 +486,8 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
 {
        dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
 
+       if (gfp & __GFP_WAIT)
+               nfs_wb_page(page->mapping->host, page);
        /* If PagePrivate() is set, then the page is not freeable */
        if (PagePrivate(page))
                return 0;