summaryrefslogtreecommitdiff
path: root/fs/nfs/file.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2016-06-23 11:09:04 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2016-07-05 19:11:08 -0400
commit9a773e7c8de2a34ae682624624e95a96b121b6d1 (patch)
tree37f4cca5a61a5863a3385091882480902b8c21ab /fs/nfs/file.c
parente95fc4a06983c14273a39d26aad9cc5a8a09ff64 (diff)
downloadlinux-riscv-9a773e7c8de2a34ae682624624e95a96b121b6d1.tar.gz
linux-riscv-9a773e7c8de2a34ae682624624e95a96b121b6d1.tar.bz2
linux-riscv-9a773e7c8de2a34ae682624624e95a96b121b6d1.zip
NFS nfs_vm_page_mkwrite: Don't freeze me, Bro...
Prevent filesystem freezes while handling the write page fault. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/file.c')
-rw-r--r--fs/nfs/file.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 0e9b4a068f13..039d58790629 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -569,6 +569,8 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
filp, filp->f_mapping->host->i_ino,
(long long)page_offset(page));
+ sb_start_pagefault(inode->i_sb);
+
/* make sure the cache has finished storing the page */
nfs_fscache_wait_on_page_write(NFS_I(inode), page);
@@ -595,6 +597,7 @@ static int nfs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
out_unlock:
unlock_page(page);
out:
+ sb_end_pagefault(inode->i_sb);
return ret;
}