mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
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:
parent
c62498d7f9
commit
249c1df59a
1 changed files with 2 additions and 0 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue