diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 48bdfd2591c2..83baec24946d 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -6629,6 +6629,7 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) | |||
6629 | u64 page_start; | 6629 | u64 page_start; |
6630 | u64 page_end; | 6630 | u64 page_end; |
6631 | 6631 | ||
6632 | sb_start_pagefault(inode->i_sb); | ||
6632 | ret = btrfs_delalloc_reserve_space(inode, PAGE_CACHE_SIZE); | 6633 | ret = btrfs_delalloc_reserve_space(inode, PAGE_CACHE_SIZE); |
6633 | if (!ret) { | 6634 | if (!ret) { |
6634 | ret = file_update_time(vma->vm_file); | 6635 | ret = file_update_time(vma->vm_file); |
@@ -6718,12 +6719,15 @@ again: | |||
6718 | unlock_extent_cached(io_tree, page_start, page_end, &cached_state, GFP_NOFS); | 6719 | unlock_extent_cached(io_tree, page_start, page_end, &cached_state, GFP_NOFS); |
6719 | 6720 | ||
6720 | out_unlock: | 6721 | out_unlock: |
6721 | if (!ret) | 6722 | if (!ret) { |
6723 | sb_end_pagefault(inode->i_sb); | ||
6722 | return VM_FAULT_LOCKED; | 6724 | return VM_FAULT_LOCKED; |
6725 | } | ||
6723 | unlock_page(page); | 6726 | unlock_page(page); |
6724 | out: | 6727 | out: |
6725 | btrfs_delalloc_release_space(inode, PAGE_CACHE_SIZE); | 6728 | btrfs_delalloc_release_space(inode, PAGE_CACHE_SIZE); |
6726 | out_noreserve: | 6729 | out_noreserve: |
6730 | sb_end_pagefault(inode->i_sb); | ||
6727 | return ret; | 6731 | return ret; |
6728 | } | 6732 | } |
6729 | 6733 | ||