summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/file.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index a2b1fc536fdd..9ecb9f3bd057 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1843,7 +1843,6 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
size_t fsize = folio_size(folio);
vm_fault_t ret;
int ret2;
- int reserved = 0;
u64 reserved_space;
u64 page_start;
u64 page_end;
@@ -1866,17 +1865,17 @@ static vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf)
*/
ret2 = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
page_start, reserved_space);
- if (!ret2) {
- ret2 = file_update_time(vmf->vma->vm_file);
- reserved = 1;
- }
if (ret2) {
ret = vmf_error(ret2);
- if (reserved)
- goto out;
goto out_noreserve;
}
+ ret2 = file_update_time(vmf->vma->vm_file);
+ if (ret2) {
+ ret = vmf_error(ret2);
+ goto out;
+ }
+
/* Make the VM retry the fault. */
ret = VM_FAULT_NOPAGE;
again:
@@ -1972,9 +1971,9 @@ out:
btrfs_delalloc_release_extents(BTRFS_I(inode), fsize);
btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved, page_start,
reserved_space, true);
+ extent_changeset_free(data_reserved);
out_noreserve:
sb_end_pagefault(inode->i_sb);
- extent_changeset_free(data_reserved);
return ret;
}