diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-06-23 11:09:04 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-05 19:11:08 -0400 |
commit | 9a773e7c8de2a34ae682624624e95a96b121b6d1 (patch) | |
tree | 37f4cca5a61a5863a3385091882480902b8c21ab /fs | |
parent | e95fc4a06983c14273a39d26aad9cc5a8a09ff64 (diff) | |
download | linux-stable-9a773e7c8de2a34ae682624624e95a96b121b6d1.tar.gz linux-stable-9a773e7c8de2a34ae682624624e95a96b121b6d1.tar.bz2 linux-stable-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')
-rw-r--r-- | fs/nfs/file.c | 3 |
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; } |