aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index fcb9a38fc9d3..ec68eaef05d7 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -814,6 +814,20 @@ retry:
814 ins.objectid, 814 ins.objectid,
815 ins.offset, async_extent->pages, 815 ins.offset, async_extent->pages,
816 async_extent->nr_pages); 816 async_extent->nr_pages);
817 if (ret) {
818 struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree;
819 struct page *p = async_extent->pages[0];
820 const u64 start = async_extent->start;
821 const u64 end = start + async_extent->ram_size - 1;
822
823 p->mapping = inode->i_mapping;
824 tree->ops->writepage_end_io_hook(p, start, end,
825 NULL, 0);
826 p->mapping = NULL;
827 extent_clear_unlock_delalloc(inode, start, end, NULL, 0,
828 PAGE_END_WRITEBACK |
829 PAGE_SET_ERROR);
830 }
817 alloc_hint = ins.objectid + ins.offset; 831 alloc_hint = ins.objectid + ins.offset;
818 kfree(async_extent); 832 kfree(async_extent);
819 if (ret) 833 if (ret)