ソースを参照

NFS: Fix nfs_release_page

invalidate_inode_pages2_range() will clear the PG_dirty bit before calling
try_to_release_page().

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Trond Myklebust 18 年 前
コミット
fa8d8c5b77
1 ファイル変更7 行追加6 行削除
  1. 7 6
      fs/nfs/file.c

+ 7 - 6
fs/nfs/file.c

@@ -315,13 +315,14 @@ static void nfs_invalidate_page(struct page *page, unsigned long offset)
 
 
 static int nfs_release_page(struct page *page, gfp_t gfp)
 static int nfs_release_page(struct page *page, gfp_t gfp)
 {
 {
-	if (gfp & __GFP_FS)
-		return !nfs_wb_page(page->mapping->host, page);
-	else
-		/*
-		 * Avoid deadlock on nfs_wait_on_request().
-		 */
+	/*
+	 * Avoid deadlock on nfs_wait_on_request().
+	 */
+	if (!(gfp & __GFP_FS))
 		return 0;
 		return 0;
+	/* Hack... Force nfs_wb_page() to write out the page */
+	SetPageDirty(page);
+	return !nfs_wb_page(page->mapping->host, page);
 }
 }
 
 
 const struct address_space_operations nfs_file_aops = {
 const struct address_space_operations nfs_file_aops = {