diff options
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r-- | fs/btrfs/relocation.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index f0c3f00e97cb..cd2298d185dd 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -3268,8 +3268,22 @@ static int relocate_file_extent_cluster(struct inode *inode, | |||
3268 | nr++; | 3268 | nr++; |
3269 | } | 3269 | } |
3270 | 3270 | ||
3271 | btrfs_set_extent_delalloc(inode, page_start, page_end, 0, NULL, | 3271 | ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0, |
3272 | 0); | 3272 | NULL, 0); |
3273 | if (ret) { | ||
3274 | unlock_page(page); | ||
3275 | put_page(page); | ||
3276 | btrfs_delalloc_release_metadata(BTRFS_I(inode), | ||
3277 | PAGE_SIZE); | ||
3278 | btrfs_delalloc_release_extents(BTRFS_I(inode), | ||
3279 | PAGE_SIZE); | ||
3280 | |||
3281 | clear_extent_bits(&BTRFS_I(inode)->io_tree, | ||
3282 | page_start, page_end, | ||
3283 | EXTENT_LOCKED | EXTENT_BOUNDARY); | ||
3284 | goto out; | ||
3285 | |||
3286 | } | ||
3273 | set_page_dirty(page); | 3287 | set_page_dirty(page); |
3274 | 3288 | ||
3275 | unlock_extent(&BTRFS_I(inode)->io_tree, | 3289 | unlock_extent(&BTRFS_I(inode)->io_tree, |