Signed-off-by: Nikolay Borisov <nbori...@suse.com> --- Hello,
THis is rfc since I'm not entirely sure the cleanup sequence currently is sufficient so ideas are welcome. I have the feeling we need to do something with the page: * SetPageError * ClearPageUptodate * Something else? fs/btrfs/relocation.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index f0c3f00e97cb..b8614cd60ca6 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -3268,12 +3268,23 @@ static int relocate_file_extent_cluster(struct inode *inode, nr++; } - btrfs_set_extent_delalloc(inode, page_start, page_end, 0, NULL, - 0); + ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0, + NULL, 0); + if (ret) { + unlock_page(page); + put_page(page); + btrfs_delalloc_release_metadata(BTRFS_I(inode), + PAGE_SIZE); + btrfs_delalloc_release_extents(BTRFS_I(inode), + PAGE_SIZE); + unlock_extent(&BTRFS_I(inode)->io_tree, page_start, + page_end); + goto out; + + } set_page_dirty(page); - unlock_extent(&BTRFS_I(inode)->io_tree, - page_start, page_end); + unlock_extent(&BTRFS_I(inode)->io_tree, page_start, page_end); unlock_page(page); put_page(page); -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html