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>
This commit is contained in:
Jeff Layton 2019-08-01 10:06:40 -04:00 committed by Ilya Dryomov
parent c62498d7f9
commit 249c1df59a
1 changed files with 2 additions and 0 deletions

View File

@ -1548,6 +1548,7 @@ static vm_fault_t ceph_page_mkwrite(struct vm_fault *vmf)
if (!prealloc_cf) if (!prealloc_cf)
return VM_FAULT_OOM; return VM_FAULT_OOM;
sb_start_pagefault(inode->i_sb);
ceph_block_sigs(&oldset); ceph_block_sigs(&oldset);
if (ci->i_inline_version != CEPH_INLINE_NONE) { 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); ceph_put_cap_refs(ci, got);
out_free: out_free:
ceph_restore_sigs(&oldset); ceph_restore_sigs(&oldset);
sb_end_pagefault(inode->i_sb);
ceph_free_cap_flush(prealloc_cf); ceph_free_cap_flush(prealloc_cf);
if (err < 0) if (err < 0)
ret = vmf_error(err); ret = vmf_error(err);