aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/relocation.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r--fs/btrfs/relocation.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 2bd0011450df..08ef890deca6 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -1850,6 +1850,7 @@ again:
1850 eb = read_tree_block(dest, old_bytenr, old_ptr_gen); 1850 eb = read_tree_block(dest, old_bytenr, old_ptr_gen);
1851 if (IS_ERR(eb)) { 1851 if (IS_ERR(eb)) {
1852 ret = PTR_ERR(eb); 1852 ret = PTR_ERR(eb);
1853 break;
1853 } else if (!extent_buffer_uptodate(eb)) { 1854 } else if (!extent_buffer_uptodate(eb)) {
1854 ret = -EIO; 1855 ret = -EIO;
1855 free_extent_buffer(eb); 1856 free_extent_buffer(eb);
@@ -3129,10 +3130,10 @@ static int relocate_file_extent_cluster(struct inode *inode,
3129 if (ret) 3130 if (ret)
3130 goto out; 3131 goto out;
3131 3132
3132 index = (cluster->start - offset) >> PAGE_CACHE_SHIFT; 3133 index = (cluster->start - offset) >> PAGE_SHIFT;
3133 last_index = (cluster->end - offset) >> PAGE_CACHE_SHIFT; 3134 last_index = (cluster->end - offset) >> PAGE_SHIFT;
3134 while (index <= last_index) { 3135 while (index <= last_index) {
3135 ret = btrfs_delalloc_reserve_metadata(inode, PAGE_CACHE_SIZE); 3136 ret = btrfs_delalloc_reserve_metadata(inode, PAGE_SIZE);
3136 if (ret) 3137 if (ret)
3137 goto out; 3138 goto out;
3138 3139
@@ -3145,7 +3146,7 @@ static int relocate_file_extent_cluster(struct inode *inode,
3145 mask); 3146 mask);
3146 if (!page) { 3147 if (!page) {
3147 btrfs_delalloc_release_metadata(inode, 3148 btrfs_delalloc_release_metadata(inode,
3148 PAGE_CACHE_SIZE); 3149 PAGE_SIZE);
3149 ret = -ENOMEM; 3150 ret = -ENOMEM;
3150 goto out; 3151 goto out;
3151 } 3152 }
@@ -3162,16 +3163,16 @@ static int relocate_file_extent_cluster(struct inode *inode,
3162 lock_page(page); 3163 lock_page(page);
3163 if (!PageUptodate(page)) { 3164 if (!PageUptodate(page)) {
3164 unlock_page(page); 3165 unlock_page(page);
3165 page_cache_release(page); 3166 put_page(page);
3166 btrfs_delalloc_release_metadata(inode, 3167 btrfs_delalloc_release_metadata(inode,
3167 PAGE_CACHE_SIZE); 3168 PAGE_SIZE);
3168 ret = -EIO; 3169 ret = -EIO;
3169 goto out; 3170 goto out;
3170 } 3171 }
3171 } 3172 }
3172 3173
3173 page_start = page_offset(page); 3174 page_start = page_offset(page);
3174 page_end = page_start + PAGE_CACHE_SIZE - 1; 3175 page_end = page_start + PAGE_SIZE - 1;
3175 3176
3176 lock_extent(&BTRFS_I(inode)->io_tree, page_start, page_end); 3177 lock_extent(&BTRFS_I(inode)->io_tree, page_start, page_end);
3177 3178
@@ -3191,7 +3192,7 @@ static int relocate_file_extent_cluster(struct inode *inode,
3191 unlock_extent(&BTRFS_I(inode)->io_tree, 3192 unlock_extent(&BTRFS_I(inode)->io_tree,
3192 page_start, page_end); 3193 page_start, page_end);
3193 unlock_page(page); 3194 unlock_page(page);
3194 page_cache_release(page); 3195 put_page(page);
3195 3196
3196 index++; 3197 index++;
3197 balance_dirty_pages_ratelimited(inode->i_mapping); 3198 balance_dirty_pages_ratelimited(inode->i_mapping);