aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ctree.h2
-rw-r--r--fs/btrfs/inode.c26
2 files changed, 13 insertions, 15 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index f4bf7874c24a..118346aceea9 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3197,7 +3197,7 @@ int btrfs_merge_bio_hook(struct page *page, unsigned long offset,
3197 size_t size, struct bio *bio, 3197 size_t size, struct bio *bio,
3198 unsigned long bio_flags); 3198 unsigned long bio_flags);
3199void btrfs_set_range_writeback(void *private_data, u64 start, u64 end); 3199void btrfs_set_range_writeback(void *private_data, u64 start, u64 end);
3200int btrfs_page_mkwrite(struct vm_fault *vmf); 3200vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf);
3201int btrfs_readpage(struct file *file, struct page *page); 3201int btrfs_readpage(struct file *file, struct page *page);
3202void btrfs_evict_inode(struct inode *inode); 3202void btrfs_evict_inode(struct inode *inode);
3203int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); 3203int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc);
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 89b208201783..c12b7a6e534a 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -8872,7 +8872,7 @@ again:
8872 * beyond EOF, then the page is guaranteed safe against truncation until we 8872 * beyond EOF, then the page is guaranteed safe against truncation until we
8873 * unlock the page. 8873 * unlock the page.
8874 */ 8874 */
8875int btrfs_page_mkwrite(struct vm_fault *vmf) 8875vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
8876{ 8876{
8877 struct page *page = vmf->page; 8877 struct page *page = vmf->page;
8878 struct inode *inode = file_inode(vmf->vma->vm_file); 8878 struct inode *inode = file_inode(vmf->vma->vm_file);
@@ -8884,7 +8884,8 @@ int btrfs_page_mkwrite(struct vm_fault *vmf)
8884 char *kaddr; 8884 char *kaddr;
8885 unsigned long zero_start; 8885 unsigned long zero_start;
8886 loff_t size; 8886 loff_t size;
8887 int ret; 8887 vm_fault_t ret;
8888 int ret2;
8888 int reserved = 0; 8889 int reserved = 0;
8889 u64 reserved_space; 8890 u64 reserved_space;
8890 u64 page_start; 8891 u64 page_start;
@@ -8906,17 +8907,14 @@ int btrfs_page_mkwrite(struct vm_fault *vmf)
8906 * end up waiting indefinitely to get a lock on the page currently 8907 * end up waiting indefinitely to get a lock on the page currently
8907 * being processed by btrfs_page_mkwrite() function. 8908 * being processed by btrfs_page_mkwrite() function.
8908 */ 8909 */
8909 ret = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start, 8910 ret2 = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start,
8910 reserved_space); 8911 reserved_space);
8911 if (!ret) { 8912 if (!ret2) {
8912 ret = file_update_time(vmf->vma->vm_file); 8913 ret2 = file_update_time(vmf->vma->vm_file);
8913 reserved = 1; 8914 reserved = 1;
8914 } 8915 }
8915 if (ret) { 8916 if (ret2) {
8916 if (ret == -ENOMEM) 8917 ret = vmf_error(ret2);
8917 ret = VM_FAULT_OOM;
8918 else /* -ENOSPC, -EIO, etc */
8919 ret = VM_FAULT_SIGBUS;
8920 if (reserved) 8918 if (reserved)
8921 goto out; 8919 goto out;
8922 goto out_noreserve; 8920 goto out_noreserve;
@@ -8975,15 +8973,15 @@ again:
8975 EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG, 8973 EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG,
8976 0, 0, &cached_state); 8974 0, 0, &cached_state);
8977 8975
8978 ret = btrfs_set_extent_delalloc(inode, page_start, end, 0, 8976 ret2 = btrfs_set_extent_delalloc(inode, page_start, end, 0,
8979 &cached_state, 0); 8977 &cached_state, 0);
8980 if (ret) { 8978 if (ret2) {
8981 unlock_extent_cached(io_tree, page_start, page_end, 8979 unlock_extent_cached(io_tree, page_start, page_end,
8982 &cached_state); 8980 &cached_state);
8983 ret = VM_FAULT_SIGBUS; 8981 ret = VM_FAULT_SIGBUS;
8984 goto out_unlock; 8982 goto out_unlock;
8985 } 8983 }
8986 ret = 0; 8984 ret2 = 0;
8987 8985
8988 /* page is wholly or partially inside EOF */ 8986 /* page is wholly or partially inside EOF */
8989 if (page_start + PAGE_SIZE > size) 8987 if (page_start + PAGE_SIZE > size)
@@ -9008,7 +9006,7 @@ again:
9008 unlock_extent_cached(io_tree, page_start, page_end, &cached_state); 9006 unlock_extent_cached(io_tree, page_start, page_end, &cached_state);
9009 9007
9010out_unlock: 9008out_unlock:
9011 if (!ret) { 9009 if (!ret2) {
9012 btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE, true); 9010 btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE, true);
9013 sb_end_pagefault(inode->i_sb); 9011 sb_end_pagefault(inode->i_sb);
9014 extent_changeset_free(data_reserved); 9012 extent_changeset_free(data_reserved);