diff options
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r-- | fs/btrfs/ioctl.c | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 053e677839fe..5a23806ae418 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -898,7 +898,7 @@ static int check_defrag_in_cache(struct inode *inode, u64 offset, u32 thresh) | |||
898 | u64 end; | 898 | u64 end; |
899 | 899 | ||
900 | read_lock(&em_tree->lock); | 900 | read_lock(&em_tree->lock); |
901 | em = lookup_extent_mapping(em_tree, offset, PAGE_CACHE_SIZE); | 901 | em = lookup_extent_mapping(em_tree, offset, PAGE_SIZE); |
902 | read_unlock(&em_tree->lock); | 902 | read_unlock(&em_tree->lock); |
903 | 903 | ||
904 | if (em) { | 904 | if (em) { |
@@ -988,7 +988,7 @@ static struct extent_map *defrag_lookup_extent(struct inode *inode, u64 start) | |||
988 | struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; | 988 | struct extent_map_tree *em_tree = &BTRFS_I(inode)->extent_tree; |
989 | struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; | 989 | struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; |
990 | struct extent_map *em; | 990 | struct extent_map *em; |
991 | u64 len = PAGE_CACHE_SIZE; | 991 | u64 len = PAGE_SIZE; |
992 | 992 | ||
993 | /* | 993 | /* |
994 | * hopefully we have this extent in the tree already, try without | 994 | * hopefully we have this extent in the tree already, try without |
@@ -1124,15 +1124,15 @@ static int cluster_pages_for_defrag(struct inode *inode, | |||
1124 | struct extent_io_tree *tree; | 1124 | struct extent_io_tree *tree; |
1125 | gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping); | 1125 | gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping); |
1126 | 1126 | ||
1127 | file_end = (isize - 1) >> PAGE_CACHE_SHIFT; | 1127 | file_end = (isize - 1) >> PAGE_SHIFT; |
1128 | if (!isize || start_index > file_end) | 1128 | if (!isize || start_index > file_end) |
1129 | return 0; | 1129 | return 0; |
1130 | 1130 | ||
1131 | page_cnt = min_t(u64, (u64)num_pages, (u64)file_end - start_index + 1); | 1131 | page_cnt = min_t(u64, (u64)num_pages, (u64)file_end - start_index + 1); |
1132 | 1132 | ||
1133 | ret = btrfs_delalloc_reserve_space(inode, | 1133 | ret = btrfs_delalloc_reserve_space(inode, |
1134 | start_index << PAGE_CACHE_SHIFT, | 1134 | start_index << PAGE_SHIFT, |
1135 | page_cnt << PAGE_CACHE_SHIFT); | 1135 | page_cnt << PAGE_SHIFT); |
1136 | if (ret) | 1136 | if (ret) |
1137 | return ret; | 1137 | return ret; |
1138 | i_done = 0; | 1138 | i_done = 0; |
@@ -1148,7 +1148,7 @@ again: | |||
1148 | break; | 1148 | break; |
1149 | 1149 | ||
1150 | page_start = page_offset(page); | 1150 | page_start = page_offset(page); |
1151 | page_end = page_start + PAGE_CACHE_SIZE - 1; | 1151 | page_end = page_start + PAGE_SIZE - 1; |
1152 | while (1) { | 1152 | while (1) { |
1153 | lock_extent_bits(tree, page_start, page_end, | 1153 | lock_extent_bits(tree, page_start, page_end, |
1154 | &cached_state); | 1154 | &cached_state); |
@@ -1169,7 +1169,7 @@ again: | |||
1169 | */ | 1169 | */ |
1170 | if (page->mapping != inode->i_mapping) { | 1170 | if (page->mapping != inode->i_mapping) { |
1171 | unlock_page(page); | 1171 | unlock_page(page); |
1172 | page_cache_release(page); | 1172 | put_page(page); |
1173 | goto again; | 1173 | goto again; |
1174 | } | 1174 | } |
1175 | } | 1175 | } |
@@ -1179,7 +1179,7 @@ again: | |||
1179 | lock_page(page); | 1179 | lock_page(page); |
1180 | if (!PageUptodate(page)) { | 1180 | if (!PageUptodate(page)) { |
1181 | unlock_page(page); | 1181 | unlock_page(page); |
1182 | page_cache_release(page); | 1182 | put_page(page); |
1183 | ret = -EIO; | 1183 | ret = -EIO; |
1184 | break; | 1184 | break; |
1185 | } | 1185 | } |
@@ -1187,7 +1187,7 @@ again: | |||
1187 | 1187 | ||
1188 | if (page->mapping != inode->i_mapping) { | 1188 | if (page->mapping != inode->i_mapping) { |
1189 | unlock_page(page); | 1189 | unlock_page(page); |
1190 | page_cache_release(page); | 1190 | put_page(page); |
1191 | goto again; | 1191 | goto again; |
1192 | } | 1192 | } |
1193 | 1193 | ||
@@ -1208,7 +1208,7 @@ again: | |||
1208 | wait_on_page_writeback(pages[i]); | 1208 | wait_on_page_writeback(pages[i]); |
1209 | 1209 | ||
1210 | page_start = page_offset(pages[0]); | 1210 | page_start = page_offset(pages[0]); |
1211 | page_end = page_offset(pages[i_done - 1]) + PAGE_CACHE_SIZE; | 1211 | page_end = page_offset(pages[i_done - 1]) + PAGE_SIZE; |
1212 | 1212 | ||
1213 | lock_extent_bits(&BTRFS_I(inode)->io_tree, | 1213 | lock_extent_bits(&BTRFS_I(inode)->io_tree, |
1214 | page_start, page_end - 1, &cached_state); | 1214 | page_start, page_end - 1, &cached_state); |
@@ -1222,8 +1222,8 @@ again: | |||
1222 | BTRFS_I(inode)->outstanding_extents++; | 1222 | BTRFS_I(inode)->outstanding_extents++; |
1223 | spin_unlock(&BTRFS_I(inode)->lock); | 1223 | spin_unlock(&BTRFS_I(inode)->lock); |
1224 | btrfs_delalloc_release_space(inode, | 1224 | btrfs_delalloc_release_space(inode, |
1225 | start_index << PAGE_CACHE_SHIFT, | 1225 | start_index << PAGE_SHIFT, |
1226 | (page_cnt - i_done) << PAGE_CACHE_SHIFT); | 1226 | (page_cnt - i_done) << PAGE_SHIFT); |
1227 | } | 1227 | } |
1228 | 1228 | ||
1229 | 1229 | ||
@@ -1240,17 +1240,17 @@ again: | |||
1240 | set_page_extent_mapped(pages[i]); | 1240 | set_page_extent_mapped(pages[i]); |
1241 | set_page_dirty(pages[i]); | 1241 | set_page_dirty(pages[i]); |
1242 | unlock_page(pages[i]); | 1242 | unlock_page(pages[i]); |
1243 | page_cache_release(pages[i]); | 1243 | put_page(pages[i]); |
1244 | } | 1244 | } |
1245 | return i_done; | 1245 | return i_done; |
1246 | out: | 1246 | out: |
1247 | for (i = 0; i < i_done; i++) { | 1247 | for (i = 0; i < i_done; i++) { |
1248 | unlock_page(pages[i]); | 1248 | unlock_page(pages[i]); |
1249 | page_cache_release(pages[i]); | 1249 | put_page(pages[i]); |
1250 | } | 1250 | } |
1251 | btrfs_delalloc_release_space(inode, | 1251 | btrfs_delalloc_release_space(inode, |
1252 | start_index << PAGE_CACHE_SHIFT, | 1252 | start_index << PAGE_SHIFT, |
1253 | page_cnt << PAGE_CACHE_SHIFT); | 1253 | page_cnt << PAGE_SHIFT); |
1254 | return ret; | 1254 | return ret; |
1255 | 1255 | ||
1256 | } | 1256 | } |
@@ -1273,7 +1273,7 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1273 | int defrag_count = 0; | 1273 | int defrag_count = 0; |
1274 | int compress_type = BTRFS_COMPRESS_ZLIB; | 1274 | int compress_type = BTRFS_COMPRESS_ZLIB; |
1275 | u32 extent_thresh = range->extent_thresh; | 1275 | u32 extent_thresh = range->extent_thresh; |
1276 | unsigned long max_cluster = SZ_256K >> PAGE_CACHE_SHIFT; | 1276 | unsigned long max_cluster = SZ_256K >> PAGE_SHIFT; |
1277 | unsigned long cluster = max_cluster; | 1277 | unsigned long cluster = max_cluster; |
1278 | u64 new_align = ~((u64)SZ_128K - 1); | 1278 | u64 new_align = ~((u64)SZ_128K - 1); |
1279 | struct page **pages = NULL; | 1279 | struct page **pages = NULL; |
@@ -1317,9 +1317,9 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1317 | /* find the last page to defrag */ | 1317 | /* find the last page to defrag */ |
1318 | if (range->start + range->len > range->start) { | 1318 | if (range->start + range->len > range->start) { |
1319 | last_index = min_t(u64, isize - 1, | 1319 | last_index = min_t(u64, isize - 1, |
1320 | range->start + range->len - 1) >> PAGE_CACHE_SHIFT; | 1320 | range->start + range->len - 1) >> PAGE_SHIFT; |
1321 | } else { | 1321 | } else { |
1322 | last_index = (isize - 1) >> PAGE_CACHE_SHIFT; | 1322 | last_index = (isize - 1) >> PAGE_SHIFT; |
1323 | } | 1323 | } |
1324 | 1324 | ||
1325 | if (newer_than) { | 1325 | if (newer_than) { |
@@ -1331,11 +1331,11 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1331 | * we always align our defrag to help keep | 1331 | * we always align our defrag to help keep |
1332 | * the extents in the file evenly spaced | 1332 | * the extents in the file evenly spaced |
1333 | */ | 1333 | */ |
1334 | i = (newer_off & new_align) >> PAGE_CACHE_SHIFT; | 1334 | i = (newer_off & new_align) >> PAGE_SHIFT; |
1335 | } else | 1335 | } else |
1336 | goto out_ra; | 1336 | goto out_ra; |
1337 | } else { | 1337 | } else { |
1338 | i = range->start >> PAGE_CACHE_SHIFT; | 1338 | i = range->start >> PAGE_SHIFT; |
1339 | } | 1339 | } |
1340 | if (!max_to_defrag) | 1340 | if (!max_to_defrag) |
1341 | max_to_defrag = last_index - i + 1; | 1341 | max_to_defrag = last_index - i + 1; |
@@ -1348,7 +1348,7 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1348 | inode->i_mapping->writeback_index = i; | 1348 | inode->i_mapping->writeback_index = i; |
1349 | 1349 | ||
1350 | while (i <= last_index && defrag_count < max_to_defrag && | 1350 | while (i <= last_index && defrag_count < max_to_defrag && |
1351 | (i < DIV_ROUND_UP(i_size_read(inode), PAGE_CACHE_SIZE))) { | 1351 | (i < DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE))) { |
1352 | /* | 1352 | /* |
1353 | * make sure we stop running if someone unmounts | 1353 | * make sure we stop running if someone unmounts |
1354 | * the FS | 1354 | * the FS |
@@ -1362,7 +1362,7 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1362 | break; | 1362 | break; |
1363 | } | 1363 | } |
1364 | 1364 | ||
1365 | if (!should_defrag_range(inode, (u64)i << PAGE_CACHE_SHIFT, | 1365 | if (!should_defrag_range(inode, (u64)i << PAGE_SHIFT, |
1366 | extent_thresh, &last_len, &skip, | 1366 | extent_thresh, &last_len, &skip, |
1367 | &defrag_end, range->flags & | 1367 | &defrag_end, range->flags & |
1368 | BTRFS_DEFRAG_RANGE_COMPRESS)) { | 1368 | BTRFS_DEFRAG_RANGE_COMPRESS)) { |
@@ -1371,14 +1371,14 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1371 | * the should_defrag function tells us how much to skip | 1371 | * the should_defrag function tells us how much to skip |
1372 | * bump our counter by the suggested amount | 1372 | * bump our counter by the suggested amount |
1373 | */ | 1373 | */ |
1374 | next = DIV_ROUND_UP(skip, PAGE_CACHE_SIZE); | 1374 | next = DIV_ROUND_UP(skip, PAGE_SIZE); |
1375 | i = max(i + 1, next); | 1375 | i = max(i + 1, next); |
1376 | continue; | 1376 | continue; |
1377 | } | 1377 | } |
1378 | 1378 | ||
1379 | if (!newer_than) { | 1379 | if (!newer_than) { |
1380 | cluster = (PAGE_CACHE_ALIGN(defrag_end) >> | 1380 | cluster = (PAGE_ALIGN(defrag_end) >> |
1381 | PAGE_CACHE_SHIFT) - i; | 1381 | PAGE_SHIFT) - i; |
1382 | cluster = min(cluster, max_cluster); | 1382 | cluster = min(cluster, max_cluster); |
1383 | } else { | 1383 | } else { |
1384 | cluster = max_cluster; | 1384 | cluster = max_cluster; |
@@ -1412,20 +1412,20 @@ int btrfs_defrag_file(struct inode *inode, struct file *file, | |||
1412 | i += ret; | 1412 | i += ret; |
1413 | 1413 | ||
1414 | newer_off = max(newer_off + 1, | 1414 | newer_off = max(newer_off + 1, |
1415 | (u64)i << PAGE_CACHE_SHIFT); | 1415 | (u64)i << PAGE_SHIFT); |
1416 | 1416 | ||
1417 | ret = find_new_extents(root, inode, newer_than, | 1417 | ret = find_new_extents(root, inode, newer_than, |
1418 | &newer_off, SZ_64K); | 1418 | &newer_off, SZ_64K); |
1419 | if (!ret) { | 1419 | if (!ret) { |
1420 | range->start = newer_off; | 1420 | range->start = newer_off; |
1421 | i = (newer_off & new_align) >> PAGE_CACHE_SHIFT; | 1421 | i = (newer_off & new_align) >> PAGE_SHIFT; |
1422 | } else { | 1422 | } else { |
1423 | break; | 1423 | break; |
1424 | } | 1424 | } |
1425 | } else { | 1425 | } else { |
1426 | if (ret > 0) { | 1426 | if (ret > 0) { |
1427 | i += ret; | 1427 | i += ret; |
1428 | last_len += ret << PAGE_CACHE_SHIFT; | 1428 | last_len += ret << PAGE_SHIFT; |
1429 | } else { | 1429 | } else { |
1430 | i++; | 1430 | i++; |
1431 | last_len = 0; | 1431 | last_len = 0; |
@@ -1654,7 +1654,7 @@ static noinline int btrfs_ioctl_snap_create_transid(struct file *file, | |||
1654 | 1654 | ||
1655 | src_inode = file_inode(src.file); | 1655 | src_inode = file_inode(src.file); |
1656 | if (src_inode->i_sb != file_inode(file)->i_sb) { | 1656 | if (src_inode->i_sb != file_inode(file)->i_sb) { |
1657 | btrfs_info(BTRFS_I(src_inode)->root->fs_info, | 1657 | btrfs_info(BTRFS_I(file_inode(file))->root->fs_info, |
1658 | "Snapshot src from another FS"); | 1658 | "Snapshot src from another FS"); |
1659 | ret = -EXDEV; | 1659 | ret = -EXDEV; |
1660 | } else if (!inode_owner_or_capable(src_inode)) { | 1660 | } else if (!inode_owner_or_capable(src_inode)) { |
@@ -1722,7 +1722,7 @@ static noinline int btrfs_ioctl_snap_create_v2(struct file *file, | |||
1722 | if (vol_args->flags & BTRFS_SUBVOL_RDONLY) | 1722 | if (vol_args->flags & BTRFS_SUBVOL_RDONLY) |
1723 | readonly = true; | 1723 | readonly = true; |
1724 | if (vol_args->flags & BTRFS_SUBVOL_QGROUP_INHERIT) { | 1724 | if (vol_args->flags & BTRFS_SUBVOL_QGROUP_INHERIT) { |
1725 | if (vol_args->size > PAGE_CACHE_SIZE) { | 1725 | if (vol_args->size > PAGE_SIZE) { |
1726 | ret = -EINVAL; | 1726 | ret = -EINVAL; |
1727 | goto free_args; | 1727 | goto free_args; |
1728 | } | 1728 | } |
@@ -2806,12 +2806,12 @@ static struct page *extent_same_get_page(struct inode *inode, pgoff_t index) | |||
2806 | lock_page(page); | 2806 | lock_page(page); |
2807 | if (!PageUptodate(page)) { | 2807 | if (!PageUptodate(page)) { |
2808 | unlock_page(page); | 2808 | unlock_page(page); |
2809 | page_cache_release(page); | 2809 | put_page(page); |
2810 | return ERR_PTR(-EIO); | 2810 | return ERR_PTR(-EIO); |
2811 | } | 2811 | } |
2812 | if (page->mapping != inode->i_mapping) { | 2812 | if (page->mapping != inode->i_mapping) { |
2813 | unlock_page(page); | 2813 | unlock_page(page); |
2814 | page_cache_release(page); | 2814 | put_page(page); |
2815 | return ERR_PTR(-EAGAIN); | 2815 | return ERR_PTR(-EAGAIN); |
2816 | } | 2816 | } |
2817 | } | 2817 | } |
@@ -2823,7 +2823,7 @@ static int gather_extent_pages(struct inode *inode, struct page **pages, | |||
2823 | int num_pages, u64 off) | 2823 | int num_pages, u64 off) |
2824 | { | 2824 | { |
2825 | int i; | 2825 | int i; |
2826 | pgoff_t index = off >> PAGE_CACHE_SHIFT; | 2826 | pgoff_t index = off >> PAGE_SHIFT; |
2827 | 2827 | ||
2828 | for (i = 0; i < num_pages; i++) { | 2828 | for (i = 0; i < num_pages; i++) { |
2829 | again: | 2829 | again: |
@@ -2932,12 +2932,12 @@ static void btrfs_cmp_data_free(struct cmp_pages *cmp) | |||
2932 | pg = cmp->src_pages[i]; | 2932 | pg = cmp->src_pages[i]; |
2933 | if (pg) { | 2933 | if (pg) { |
2934 | unlock_page(pg); | 2934 | unlock_page(pg); |
2935 | page_cache_release(pg); | 2935 | put_page(pg); |
2936 | } | 2936 | } |
2937 | pg = cmp->dst_pages[i]; | 2937 | pg = cmp->dst_pages[i]; |
2938 | if (pg) { | 2938 | if (pg) { |
2939 | unlock_page(pg); | 2939 | unlock_page(pg); |
2940 | page_cache_release(pg); | 2940 | put_page(pg); |
2941 | } | 2941 | } |
2942 | } | 2942 | } |
2943 | kfree(cmp->src_pages); | 2943 | kfree(cmp->src_pages); |
@@ -2949,7 +2949,7 @@ static int btrfs_cmp_data_prepare(struct inode *src, u64 loff, | |||
2949 | u64 len, struct cmp_pages *cmp) | 2949 | u64 len, struct cmp_pages *cmp) |
2950 | { | 2950 | { |
2951 | int ret; | 2951 | int ret; |
2952 | int num_pages = PAGE_CACHE_ALIGN(len) >> PAGE_CACHE_SHIFT; | 2952 | int num_pages = PAGE_ALIGN(len) >> PAGE_SHIFT; |
2953 | struct page **src_pgarr, **dst_pgarr; | 2953 | struct page **src_pgarr, **dst_pgarr; |
2954 | 2954 | ||
2955 | /* | 2955 | /* |
@@ -2987,12 +2987,12 @@ static int btrfs_cmp_data(struct inode *src, u64 loff, struct inode *dst, | |||
2987 | int ret = 0; | 2987 | int ret = 0; |
2988 | int i; | 2988 | int i; |
2989 | struct page *src_page, *dst_page; | 2989 | struct page *src_page, *dst_page; |
2990 | unsigned int cmp_len = PAGE_CACHE_SIZE; | 2990 | unsigned int cmp_len = PAGE_SIZE; |
2991 | void *addr, *dst_addr; | 2991 | void *addr, *dst_addr; |
2992 | 2992 | ||
2993 | i = 0; | 2993 | i = 0; |
2994 | while (len) { | 2994 | while (len) { |
2995 | if (len < PAGE_CACHE_SIZE) | 2995 | if (len < PAGE_SIZE) |
2996 | cmp_len = len; | 2996 | cmp_len = len; |
2997 | 2997 | ||
2998 | BUG_ON(i >= cmp->num_pages); | 2998 | BUG_ON(i >= cmp->num_pages); |
@@ -3191,7 +3191,7 @@ ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen, | |||
3191 | if (olen > BTRFS_MAX_DEDUPE_LEN) | 3191 | if (olen > BTRFS_MAX_DEDUPE_LEN) |
3192 | olen = BTRFS_MAX_DEDUPE_LEN; | 3192 | olen = BTRFS_MAX_DEDUPE_LEN; |
3193 | 3193 | ||
3194 | if (WARN_ON_ONCE(bs < PAGE_CACHE_SIZE)) { | 3194 | if (WARN_ON_ONCE(bs < PAGE_SIZE)) { |
3195 | /* | 3195 | /* |
3196 | * Btrfs does not support blocksize < page_size. As a | 3196 | * Btrfs does not support blocksize < page_size. As a |
3197 | * result, btrfs_cmp_data() won't correctly handle | 3197 | * result, btrfs_cmp_data() won't correctly handle |
@@ -3891,8 +3891,8 @@ static noinline int btrfs_clone_files(struct file *file, struct file *file_src, | |||
3891 | * data immediately and not the previous data. | 3891 | * data immediately and not the previous data. |
3892 | */ | 3892 | */ |
3893 | truncate_inode_pages_range(&inode->i_data, | 3893 | truncate_inode_pages_range(&inode->i_data, |
3894 | round_down(destoff, PAGE_CACHE_SIZE), | 3894 | round_down(destoff, PAGE_SIZE), |
3895 | round_up(destoff + len, PAGE_CACHE_SIZE) - 1); | 3895 | round_up(destoff + len, PAGE_SIZE) - 1); |
3896 | out_unlock: | 3896 | out_unlock: |
3897 | if (!same_inode) | 3897 | if (!same_inode) |
3898 | btrfs_double_inode_unlock(src, inode); | 3898 | btrfs_double_inode_unlock(src, inode); |
@@ -4124,7 +4124,7 @@ static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | |||
4124 | /* we generally have at most 6 or so space infos, one for each raid | 4124 | /* we generally have at most 6 or so space infos, one for each raid |
4125 | * level. So, a whole page should be more than enough for everyone | 4125 | * level. So, a whole page should be more than enough for everyone |
4126 | */ | 4126 | */ |
4127 | if (alloc_size > PAGE_CACHE_SIZE) | 4127 | if (alloc_size > PAGE_SIZE) |
4128 | return -ENOMEM; | 4128 | return -ENOMEM; |
4129 | 4129 | ||
4130 | space_args.total_spaces = 0; | 4130 | space_args.total_spaces = 0; |