diff options
author | Jeff Layton <jlayton@kernel.org> | 2019-08-01 10:06:40 -0400 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2019-09-16 12:06:25 +0200 |
commit | 249c1df59a508969f5263ac7e3aedfce7f52c556 (patch) | |
tree | 2d7cf8dd98f5b2b66bcc502280ceb4e0affdd424 /fs/ceph | |
parent | c62498d7f9d37d5e60d61ca2a4e1f88211af7645 (diff) |
ceph: don't freeze during write page faults
Prevent freezing operations during write page faults. This is good
practice for most filesystems, but especially for ceph since we're
monkeying with the signal table here.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/addr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 90e8f8487aaf..9efd51926792 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -1548,6 +1548,7 @@ static vm_fault_t ceph_page_mkwrite(struct vm_fault *vmf) if (!prealloc_cf) return VM_FAULT_OOM; + sb_start_pagefault(inode->i_sb); ceph_block_sigs(&oldset); if (ci->i_inline_version != CEPH_INLINE_NONE) { @@ -1622,6 +1623,7 @@ static vm_fault_t ceph_page_mkwrite(struct vm_fault *vmf) ceph_put_cap_refs(ci, got); out_free: ceph_restore_sigs(&oldset); + sb_end_pagefault(inode->i_sb); ceph_free_cap_flush(prealloc_cf); if (err < 0) ret = vmf_error(err); |