aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/inode.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index ec5423790bbb..17e608c4dc70 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4307,10 +4307,15 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
4307 u64 page_end; 4307 u64 page_end;
4308 4308
4309 ret = btrfs_check_data_free_space(root, inode, PAGE_CACHE_SIZE); 4309 ret = btrfs_check_data_free_space(root, inode, PAGE_CACHE_SIZE);
4310 if (ret) 4310 if (ret) {
4311 if (ret == -ENOMEM)
4312 ret = VM_FAULT_OOM;
4313 else /* -ENOSPC, -EIO, etc */
4314 ret = VM_FAULT_SIGBUS;
4311 goto out; 4315 goto out;
4316 }
4312 4317
4313 ret = -EINVAL; 4318 ret = VM_FAULT_NOPAGE; /* make the VM retry the fault */
4314again: 4319again:
4315 lock_page(page); 4320 lock_page(page);
4316 size = i_size_read(inode); 4321 size = i_size_read(inode);
@@ -4363,8 +4368,6 @@ again:
4363out_unlock: 4368out_unlock:
4364 unlock_page(page); 4369 unlock_page(page);
4365out: 4370out:
4366 if (ret)
4367 ret = VM_FAULT_SIGBUS;
4368 return ret; 4371 return ret;
4369} 4372}
4370 4373