diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/ext4/ext4_extents.h | 55 | ||||
| -rw-r--r-- | fs/ext4/extents.c | 160 | ||||
| -rw-r--r-- | fs/ext4/migrate.c | 2 | ||||
| -rw-r--r-- | fs/ext4/move_extent.c | 22 |
4 files changed, 121 insertions, 118 deletions
diff --git a/fs/ext4/ext4_extents.h b/fs/ext4/ext4_extents.h index e427082e9ff..28ce70fd9cd 100644 --- a/fs/ext4/ext4_extents.h +++ b/fs/ext4/ext4_extents.h | |||
| @@ -225,11 +225,60 @@ static inline void ext4_ext_mark_initialized(struct ext4_extent *ext) | |||
| 225 | ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext)); | 225 | ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext)); |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | /* | ||
| 229 | * ext4_ext_pblock: | ||
| 230 | * combine low and high parts of physical block number into ext4_fsblk_t | ||
| 231 | */ | ||
| 232 | static inline ext4_fsblk_t ext4_ext_pblock(struct ext4_extent *ex) | ||
| 233 | { | ||
| 234 | ext4_fsblk_t block; | ||
| 235 | |||
| 236 | block = le32_to_cpu(ex->ee_start_lo); | ||
| 237 | block |= ((ext4_fsblk_t) le16_to_cpu(ex->ee_start_hi) << 31) << 1; | ||
| 238 | return block; | ||
| 239 | } | ||
| 240 | |||
| 241 | /* | ||
| 242 | * ext4_idx_pblock: | ||
| 243 | * combine low and high parts of a leaf physical block number into ext4_fsblk_t | ||
| 244 | */ | ||
| 245 | static inline ext4_fsblk_t ext4_idx_pblock(struct ext4_extent_idx *ix) | ||
| 246 | { | ||
| 247 | ext4_fsblk_t block; | ||
| 248 | |||
| 249 | block = le32_to_cpu(ix->ei_leaf_lo); | ||
| 250 | block |= ((ext4_fsblk_t) le16_to_cpu(ix->ei_leaf_hi) << 31) << 1; | ||
| 251 | return block; | ||
| 252 | } | ||
| 253 | |||
| 254 | /* | ||
| 255 | * ext4_ext_store_pblock: | ||
| 256 | * stores a large physical block number into an extent struct, | ||
| 257 | * breaking it into parts | ||
| 258 | */ | ||
| 259 | static inline void ext4_ext_store_pblock(struct ext4_extent *ex, | ||
| 260 | ext4_fsblk_t pb) | ||
| 261 | { | ||
| 262 | ex->ee_start_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 263 | ex->ee_start_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & | ||
| 264 | 0xffff); | ||
| 265 | } | ||
| 266 | |||
| 267 | /* | ||
| 268 | * ext4_idx_store_pblock: | ||
| 269 | * stores a large physical block number into an index struct, | ||
| 270 | * breaking it into parts | ||
| 271 | */ | ||
| 272 | static inline void ext4_idx_store_pblock(struct ext4_extent_idx *ix, | ||
| 273 | ext4_fsblk_t pb) | ||
| 274 | { | ||
| 275 | ix->ei_leaf_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 276 | ix->ei_leaf_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & | ||
| 277 | 0xffff); | ||
| 278 | } | ||
| 279 | |||
| 228 | extern int ext4_ext_calc_metadata_amount(struct inode *inode, | 280 | extern int ext4_ext_calc_metadata_amount(struct inode *inode, |
| 229 | sector_t lblocks); | 281 | sector_t lblocks); |
| 230 | extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex); | ||
| 231 | extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *); | ||
| 232 | extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t); | ||
| 233 | extern int ext4_extent_tree_init(handle_t *, struct inode *); | 282 | extern int ext4_extent_tree_init(handle_t *, struct inode *); |
| 234 | extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, | 283 | extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, |
| 235 | int num, | 284 | int num, |
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index bd95375314a..20e6c3c65fa 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c | |||
| @@ -44,55 +44,6 @@ | |||
| 44 | #include "ext4_jbd2.h" | 44 | #include "ext4_jbd2.h" |
| 45 | #include "ext4_extents.h" | 45 | #include "ext4_extents.h" |
| 46 | 46 | ||
| 47 | |||
| 48 | /* | ||
| 49 | * ext_pblock: | ||
| 50 | * combine low and high parts of physical block number into ext4_fsblk_t | ||
| 51 | */ | ||
| 52 | ext4_fsblk_t ext_pblock(struct ext4_extent *ex) | ||
| 53 | { | ||
| 54 | ext4_fsblk_t block; | ||
| 55 | |||
| 56 | block = le32_to_cpu(ex->ee_start_lo); | ||
| 57 | block |= ((ext4_fsblk_t) le16_to_cpu(ex->ee_start_hi) << 31) << 1; | ||
| 58 | return block; | ||
| 59 | } | ||
| 60 | |||
| 61 | /* | ||
| 62 | * idx_pblock: | ||
| 63 | * combine low and high parts of a leaf physical block number into ext4_fsblk_t | ||
| 64 | */ | ||
| 65 | ext4_fsblk_t idx_pblock(struct ext4_extent_idx *ix) | ||
| 66 | { | ||
| 67 | ext4_fsblk_t block; | ||
| 68 | |||
| 69 | block = le32_to_cpu(ix->ei_leaf_lo); | ||
| 70 | block |= ((ext4_fsblk_t) le16_to_cpu(ix->ei_leaf_hi) << 31) << 1; | ||
| 71 | return block; | ||
| 72 | } | ||
| 73 | |||
| 74 | /* | ||
| 75 | * ext4_ext_store_pblock: | ||
| 76 | * stores a large physical block number into an extent struct, | ||
| 77 | * breaking it into parts | ||
| 78 | */ | ||
| 79 | void ext4_ext_store_pblock(struct ext4_extent *ex, ext4_fsblk_t pb) | ||
| 80 | { | ||
| 81 | ex->ee_start_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 82 | ex->ee_start_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & 0xffff); | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | ||
| 86 | * ext4_idx_store_pblock: | ||
| 87 | * stores a large physical block number into an index struct, | ||
| 88 | * breaking it into parts | ||
| 89 | */ | ||
| 90 | static void ext4_idx_store_pblock(struct ext4_extent_idx *ix, ext4_fsblk_t pb) | ||
| 91 | { | ||
| 92 | ix->ei_leaf_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 93 | ix->ei_leaf_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & 0xffff); | ||
| 94 | } | ||
| 95 | |||
| 96 | static int ext4_ext_truncate_extend_restart(handle_t *handle, | 47 | static int ext4_ext_truncate_extend_restart(handle_t *handle, |
| 97 | struct inode *inode, | 48 | struct inode *inode, |
| 98 | int needed) | 49 | int needed) |
| @@ -169,7 +120,8 @@ static ext4_fsblk_t ext4_ext_find_goal(struct inode *inode, | |||
| 169 | /* try to predict block placement */ | 120 | /* try to predict block placement */ |
| 170 | ex = path[depth].p_ext; | 121 | ex = path[depth].p_ext; |
| 171 | if (ex) | 122 | if (ex) |
| 172 | return ext_pblock(ex)+(block-le32_to_cpu(ex->ee_block)); | 123 | return (ext4_ext_pblock(ex) + |
| 124 | (block - le32_to_cpu(ex->ee_block))); | ||
| 173 | 125 | ||
| 174 | /* it looks like index is empty; | 126 | /* it looks like index is empty; |
| 175 | * try to find starting block from index itself */ | 127 | * try to find starting block from index itself */ |
| @@ -354,7 +306,7 @@ ext4_ext_max_entries(struct inode *inode, int depth) | |||
| 354 | 306 | ||
| 355 | static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) | 307 | static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) |
| 356 | { | 308 | { |
| 357 | ext4_fsblk_t block = ext_pblock(ext); | 309 | ext4_fsblk_t block = ext4_ext_pblock(ext); |
| 358 | int len = ext4_ext_get_actual_len(ext); | 310 | int len = ext4_ext_get_actual_len(ext); |
| 359 | 311 | ||
| 360 | return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len); | 312 | return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len); |
| @@ -363,7 +315,7 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) | |||
| 363 | static int ext4_valid_extent_idx(struct inode *inode, | 315 | static int ext4_valid_extent_idx(struct inode *inode, |
| 364 | struct ext4_extent_idx *ext_idx) | 316 | struct ext4_extent_idx *ext_idx) |
| 365 | { | 317 | { |
| 366 | ext4_fsblk_t block = idx_pblock(ext_idx); | 318 | ext4_fsblk_t block = ext4_idx_pblock(ext_idx); |
| 367 | 319 | ||
| 368 | return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, 1); | 320 | return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, 1); |
| 369 | } | 321 | } |
| @@ -463,13 +415,13 @@ static void ext4_ext_show_path(struct inode *inode, struct ext4_ext_path *path) | |||
| 463 | for (k = 0; k <= l; k++, path++) { | 415 | for (k = 0; k <= l; k++, path++) { |
| 464 | if (path->p_idx) { | 416 | if (path->p_idx) { |
| 465 | ext_debug(" %d->%llu", le32_to_cpu(path->p_idx->ei_block), | 417 | ext_debug(" %d->%llu", le32_to_cpu(path->p_idx->ei_block), |
| 466 | idx_pblock(path->p_idx)); | 418 | ext4_idx_pblock(path->p_idx)); |
| 467 | } else if (path->p_ext) { | 419 | } else if (path->p_ext) { |
| 468 | ext_debug(" %d:[%d]%d:%llu ", | 420 | ext_debug(" %d:[%d]%d:%llu ", |
| 469 | le32_to_cpu(path->p_ext->ee_block), | 421 | le32_to_cpu(path->p_ext->ee_block), |
| 470 | ext4_ext_is_uninitialized(path->p_ext), | 422 | ext4_ext_is_uninitialized(path->p_ext), |
| 471 | ext4_ext_get_actual_len(path->p_ext), | 423 | ext4_ext_get_actual_len(path->p_ext), |
| 472 | ext_pblock(path->p_ext)); | 424 | ext4_ext_pblock(path->p_ext)); |
| 473 | } else | 425 | } else |
| 474 | ext_debug(" []"); | 426 | ext_debug(" []"); |
| 475 | } | 427 | } |
| @@ -494,7 +446,7 @@ static void ext4_ext_show_leaf(struct inode *inode, struct ext4_ext_path *path) | |||
| 494 | for (i = 0; i < le16_to_cpu(eh->eh_entries); i++, ex++) { | 446 | for (i = 0; i < le16_to_cpu(eh->eh_entries); i++, ex++) { |
| 495 | ext_debug("%d:[%d]%d:%llu ", le32_to_cpu(ex->ee_block), | 447 | ext_debug("%d:[%d]%d:%llu ", le32_to_cpu(ex->ee_block), |
| 496 | ext4_ext_is_uninitialized(ex), | 448 | ext4_ext_is_uninitialized(ex), |
| 497 | ext4_ext_get_actual_len(ex), ext_pblock(ex)); | 449 | ext4_ext_get_actual_len(ex), ext4_ext_pblock(ex)); |
| 498 | } | 450 | } |
| 499 | ext_debug("\n"); | 451 | ext_debug("\n"); |
| 500 | } | 452 | } |
| @@ -545,7 +497,7 @@ ext4_ext_binsearch_idx(struct inode *inode, | |||
| 545 | 497 | ||
| 546 | path->p_idx = l - 1; | 498 | path->p_idx = l - 1; |
| 547 | ext_debug(" -> %d->%lld ", le32_to_cpu(path->p_idx->ei_block), | 499 | ext_debug(" -> %d->%lld ", le32_to_cpu(path->p_idx->ei_block), |
| 548 | idx_pblock(path->p_idx)); | 500 | ext4_idx_pblock(path->p_idx)); |
| 549 | 501 | ||
| 550 | #ifdef CHECK_BINSEARCH | 502 | #ifdef CHECK_BINSEARCH |
| 551 | { | 503 | { |
| @@ -614,7 +566,7 @@ ext4_ext_binsearch(struct inode *inode, | |||
| 614 | path->p_ext = l - 1; | 566 | path->p_ext = l - 1; |
| 615 | ext_debug(" -> %d:%llu:[%d]%d ", | 567 | ext_debug(" -> %d:%llu:[%d]%d ", |
| 616 | le32_to_cpu(path->p_ext->ee_block), | 568 | le32_to_cpu(path->p_ext->ee_block), |
| 617 | ext_pblock(path->p_ext), | 569 | ext4_ext_pblock(path->p_ext), |
| 618 | ext4_ext_is_uninitialized(path->p_ext), | 570 | ext4_ext_is_uninitialized(path->p_ext), |
| 619 | ext4_ext_get_actual_len(path->p_ext)); | 571 | ext4_ext_get_actual_len(path->p_ext)); |
| 620 | 572 | ||
| @@ -682,7 +634,7 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block, | |||
| 682 | ppos, le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max)); | 634 | ppos, le16_to_cpu(eh->eh_entries), le16_to_cpu(eh->eh_max)); |
| 683 | 635 | ||
| 684 | ext4_ext_binsearch_idx(inode, path + ppos, block); | 636 | ext4_ext_binsearch_idx(inode, path + ppos, block); |
| 685 | path[ppos].p_block = idx_pblock(path[ppos].p_idx); | 637 | path[ppos].p_block = ext4_idx_pblock(path[ppos].p_idx); |
| 686 | path[ppos].p_depth = i; | 638 | path[ppos].p_depth = i; |
| 687 | path[ppos].p_ext = NULL; | 639 | path[ppos].p_ext = NULL; |
| 688 | 640 | ||
| @@ -721,7 +673,7 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block, | |||
| 721 | ext4_ext_binsearch(inode, path + ppos, block); | 673 | ext4_ext_binsearch(inode, path + ppos, block); |
| 722 | /* if not an empty leaf */ | 674 | /* if not an empty leaf */ |
| 723 | if (path[ppos].p_ext) | 675 | if (path[ppos].p_ext) |
| 724 | path[ppos].p_block = ext_pblock(path[ppos].p_ext); | 676 | path[ppos].p_block = ext4_ext_pblock(path[ppos].p_ext); |
| 725 | 677 | ||
| 726 | ext4_ext_show_path(inode, path); | 678 | ext4_ext_show_path(inode, path); |
| 727 | 679 | ||
| @@ -917,7 +869,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, | |||
| 917 | EXT_MAX_EXTENT(path[depth].p_hdr)) { | 869 | EXT_MAX_EXTENT(path[depth].p_hdr)) { |
| 918 | ext_debug("move %d:%llu:[%d]%d in new leaf %llu\n", | 870 | ext_debug("move %d:%llu:[%d]%d in new leaf %llu\n", |
| 919 | le32_to_cpu(path[depth].p_ext->ee_block), | 871 | le32_to_cpu(path[depth].p_ext->ee_block), |
| 920 | ext_pblock(path[depth].p_ext), | 872 | ext4_ext_pblock(path[depth].p_ext), |
| 921 | ext4_ext_is_uninitialized(path[depth].p_ext), | 873 | ext4_ext_is_uninitialized(path[depth].p_ext), |
| 922 | ext4_ext_get_actual_len(path[depth].p_ext), | 874 | ext4_ext_get_actual_len(path[depth].p_ext), |
| 923 | newblock); | 875 | newblock); |
| @@ -1007,7 +959,7 @@ static int ext4_ext_split(handle_t *handle, struct inode *inode, | |||
| 1007 | while (path[i].p_idx <= EXT_MAX_INDEX(path[i].p_hdr)) { | 959 | while (path[i].p_idx <= EXT_MAX_INDEX(path[i].p_hdr)) { |
| 1008 | ext_debug("%d: move %d:%llu in new index %llu\n", i, | 960 | ext_debug("%d: move %d:%llu in new index %llu\n", i, |
| 1009 | le32_to_cpu(path[i].p_idx->ei_block), | 961 | le32_to_cpu(path[i].p_idx->ei_block), |
| 1010 | idx_pblock(path[i].p_idx), | 962 | ext4_idx_pblock(path[i].p_idx), |
| 1011 | newblock); | 963 | newblock); |
| 1012 | /*memmove(++fidx, path[i].p_idx++, | 964 | /*memmove(++fidx, path[i].p_idx++, |
| 1013 | sizeof(struct ext4_extent_idx)); | 965 | sizeof(struct ext4_extent_idx)); |
| @@ -1146,7 +1098,7 @@ static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode, | |||
| 1146 | ext_debug("new root: num %d(%d), lblock %d, ptr %llu\n", | 1098 | ext_debug("new root: num %d(%d), lblock %d, ptr %llu\n", |
| 1147 | le16_to_cpu(neh->eh_entries), le16_to_cpu(neh->eh_max), | 1099 | le16_to_cpu(neh->eh_entries), le16_to_cpu(neh->eh_max), |
| 1148 | le32_to_cpu(EXT_FIRST_INDEX(neh)->ei_block), | 1100 | le32_to_cpu(EXT_FIRST_INDEX(neh)->ei_block), |
| 1149 | idx_pblock(EXT_FIRST_INDEX(neh))); | 1101 | ext4_idx_pblock(EXT_FIRST_INDEX(neh))); |
| 1150 | 1102 | ||
| 1151 | neh->eh_depth = cpu_to_le16(path->p_depth + 1); | 1103 | neh->eh_depth = cpu_to_le16(path->p_depth + 1); |
| 1152 | err = ext4_ext_dirty(handle, inode, curp); | 1104 | err = ext4_ext_dirty(handle, inode, curp); |
| @@ -1286,7 +1238,7 @@ static int ext4_ext_search_left(struct inode *inode, | |||
| 1286 | } | 1238 | } |
| 1287 | 1239 | ||
| 1288 | *logical = le32_to_cpu(ex->ee_block) + ee_len - 1; | 1240 | *logical = le32_to_cpu(ex->ee_block) + ee_len - 1; |
| 1289 | *phys = ext_pblock(ex) + ee_len - 1; | 1241 | *phys = ext4_ext_pblock(ex) + ee_len - 1; |
| 1290 | return 0; | 1242 | return 0; |
| 1291 | } | 1243 | } |
| 1292 | 1244 | ||
| @@ -1342,7 +1294,7 @@ static int ext4_ext_search_right(struct inode *inode, | |||
| 1342 | } | 1294 | } |
| 1343 | } | 1295 | } |
| 1344 | *logical = le32_to_cpu(ex->ee_block); | 1296 | *logical = le32_to_cpu(ex->ee_block); |
| 1345 | *phys = ext_pblock(ex); | 1297 | *phys = ext4_ext_pblock(ex); |
| 1346 | return 0; | 1298 | return 0; |
| 1347 | } | 1299 | } |
| 1348 | 1300 | ||
| @@ -1357,7 +1309,7 @@ static int ext4_ext_search_right(struct inode *inode, | |||
| 1357 | /* next allocated block in this leaf */ | 1309 | /* next allocated block in this leaf */ |
| 1358 | ex++; | 1310 | ex++; |
| 1359 | *logical = le32_to_cpu(ex->ee_block); | 1311 | *logical = le32_to_cpu(ex->ee_block); |
| 1360 | *phys = ext_pblock(ex); | 1312 | *phys = ext4_ext_pblock(ex); |
| 1361 | return 0; | 1313 | return 0; |
| 1362 | } | 1314 | } |
| 1363 | 1315 | ||
| @@ -1376,7 +1328,7 @@ got_index: | |||
| 1376 | * follow it and find the closest allocated | 1328 | * follow it and find the closest allocated |
| 1377 | * block to the right */ | 1329 | * block to the right */ |
| 1378 | ix++; | 1330 | ix++; |
| 1379 | block = idx_pblock(ix); | 1331 | block = ext4_idx_pblock(ix); |
| 1380 | while (++depth < path->p_depth) { | 1332 | while (++depth < path->p_depth) { |
| 1381 | bh = sb_bread(inode->i_sb, block); | 1333 | bh = sb_bread(inode->i_sb, block); |
| 1382 | if (bh == NULL) | 1334 | if (bh == NULL) |
| @@ -1388,7 +1340,7 @@ got_index: | |||
| 1388 | return -EIO; | 1340 | return -EIO; |
| 1389 | } | 1341 | } |
| 1390 | ix = EXT_FIRST_INDEX(eh); | 1342 | ix = EXT_FIRST_INDEX(eh); |
| 1391 | block = idx_pblock(ix); | 1343 | block = ext4_idx_pblock(ix); |
| 1392 | put_bh(bh); | 1344 | put_bh(bh); |
| 1393 | } | 1345 | } |
| 1394 | 1346 | ||
| @@ -1402,7 +1354,7 @@ got_index: | |||
| 1402 | } | 1354 | } |
| 1403 | ex = EXT_FIRST_EXTENT(eh); | 1355 | ex = EXT_FIRST_EXTENT(eh); |
| 1404 | *logical = le32_to_cpu(ex->ee_block); | 1356 | *logical = le32_to_cpu(ex->ee_block); |
| 1405 | *phys = ext_pblock(ex); | 1357 | *phys = ext4_ext_pblock(ex); |
| 1406 | put_bh(bh); | 1358 | put_bh(bh); |
| 1407 | return 0; | 1359 | return 0; |
| 1408 | } | 1360 | } |
| @@ -1573,7 +1525,7 @@ ext4_can_extents_be_merged(struct inode *inode, struct ext4_extent *ex1, | |||
| 1573 | return 0; | 1525 | return 0; |
| 1574 | #endif | 1526 | #endif |
| 1575 | 1527 | ||
| 1576 | if (ext_pblock(ex1) + ext1_ee_len == ext_pblock(ex2)) | 1528 | if (ext4_ext_pblock(ex1) + ext1_ee_len == ext4_ext_pblock(ex2)) |
| 1577 | return 1; | 1529 | return 1; |
| 1578 | return 0; | 1530 | return 0; |
| 1579 | } | 1531 | } |
| @@ -1706,11 +1658,12 @@ int ext4_ext_insert_extent(handle_t *handle, struct inode *inode, | |||
| 1706 | if (ex && !(flag & EXT4_GET_BLOCKS_PRE_IO) | 1658 | if (ex && !(flag & EXT4_GET_BLOCKS_PRE_IO) |
| 1707 | && ext4_can_extents_be_merged(inode, ex, newext)) { | 1659 | && ext4_can_extents_be_merged(inode, ex, newext)) { |
| 1708 | ext_debug("append [%d]%d block to %d:[%d]%d (from %llu)\n", | 1660 | ext_debug("append [%d]%d block to %d:[%d]%d (from %llu)\n", |
| 1709 | ext4_ext_is_uninitialized(newext), | 1661 | ext4_ext_is_uninitialized(newext), |
| 1710 | ext4_ext_get_actual_len(newext), | 1662 | ext4_ext_get_actual_len(newext), |
| 1711 | le32_to_cpu(ex->ee_block), | 1663 | le32_to_cpu(ex->ee_block), |
| 1712 | ext4_ext_is_uninitialized(ex), | 1664 | ext4_ext_is_uninitialized(ex), |
| 1713 | ext4_ext_get_actual_len(ex), ext_pblock(ex)); | 1665 | ext4_ext_get_actual_len(ex), |
| 1666 | ext4_ext_pblock(ex)); | ||
| 1714 | err = ext4_ext_get_access(handle, inode, path + depth); | 1667 | err = ext4_ext_get_access(handle, inode, path + depth); |
| 1715 | if (err) | 1668 | if (err) |
| 1716 | return err; | 1669 | return err; |
| @@ -1780,7 +1733,7 @@ has_space: | |||
| 1780 | /* there is no extent in this leaf, create first one */ | 1733 | /* there is no extent in this leaf, create first one */ |
| 1781 | ext_debug("first extent in the leaf: %d:%llu:[%d]%d\n", | 1734 | ext_debug("first extent in the leaf: %d:%llu:[%d]%d\n", |
| 1782 | le32_to_cpu(newext->ee_block), | 1735 | le32_to_cpu(newext->ee_block), |
| 1783 | ext_pblock(newext), | 1736 | ext4_ext_pblock(newext), |
| 1784 | ext4_ext_is_uninitialized(newext), | 1737 | ext4_ext_is_uninitialized(newext), |
| 1785 | ext4_ext_get_actual_len(newext)); | 1738 | ext4_ext_get_actual_len(newext)); |
| 1786 | path[depth].p_ext = EXT_FIRST_EXTENT(eh); | 1739 | path[depth].p_ext = EXT_FIRST_EXTENT(eh); |
| @@ -1794,7 +1747,7 @@ has_space: | |||
| 1794 | ext_debug("insert %d:%llu:[%d]%d after: nearest 0x%p, " | 1747 | ext_debug("insert %d:%llu:[%d]%d after: nearest 0x%p, " |
| 1795 | "move %d from 0x%p to 0x%p\n", | 1748 | "move %d from 0x%p to 0x%p\n", |
| 1796 | le32_to_cpu(newext->ee_block), | 1749 | le32_to_cpu(newext->ee_block), |
| 1797 | ext_pblock(newext), | 1750 | ext4_ext_pblock(newext), |
| 1798 | ext4_ext_is_uninitialized(newext), | 1751 | ext4_ext_is_uninitialized(newext), |
| 1799 | ext4_ext_get_actual_len(newext), | 1752 | ext4_ext_get_actual_len(newext), |
| 1800 | nearex, len, nearex + 1, nearex + 2); | 1753 | nearex, len, nearex + 1, nearex + 2); |
| @@ -1808,7 +1761,7 @@ has_space: | |||
| 1808 | ext_debug("insert %d:%llu:[%d]%d before: nearest 0x%p, " | 1761 | ext_debug("insert %d:%llu:[%d]%d before: nearest 0x%p, " |
| 1809 | "move %d from 0x%p to 0x%p\n", | 1762 | "move %d from 0x%p to 0x%p\n", |
| 1810 | le32_to_cpu(newext->ee_block), | 1763 | le32_to_cpu(newext->ee_block), |
| 1811 | ext_pblock(newext), | 1764 | ext4_ext_pblock(newext), |
| 1812 | ext4_ext_is_uninitialized(newext), | 1765 | ext4_ext_is_uninitialized(newext), |
| 1813 | ext4_ext_get_actual_len(newext), | 1766 | ext4_ext_get_actual_len(newext), |
| 1814 | nearex, len, nearex + 1, nearex + 2); | 1767 | nearex, len, nearex + 1, nearex + 2); |
| @@ -1819,7 +1772,7 @@ has_space: | |||
| 1819 | le16_add_cpu(&eh->eh_entries, 1); | 1772 | le16_add_cpu(&eh->eh_entries, 1); |
| 1820 | nearex = path[depth].p_ext; | 1773 | nearex = path[depth].p_ext; |
| 1821 | nearex->ee_block = newext->ee_block; | 1774 | nearex->ee_block = newext->ee_block; |
| 1822 | ext4_ext_store_pblock(nearex, ext_pblock(newext)); | 1775 | ext4_ext_store_pblock(nearex, ext4_ext_pblock(newext)); |
| 1823 | nearex->ee_len = newext->ee_len; | 1776 | nearex->ee_len = newext->ee_len; |
| 1824 | 1777 | ||
| 1825 | merge: | 1778 | merge: |
| @@ -1923,7 +1876,7 @@ static int ext4_ext_walk_space(struct inode *inode, ext4_lblk_t block, | |||
| 1923 | } else { | 1876 | } else { |
| 1924 | cbex.ec_block = le32_to_cpu(ex->ee_block); | 1877 | cbex.ec_block = le32_to_cpu(ex->ee_block); |
| 1925 | cbex.ec_len = ext4_ext_get_actual_len(ex); | 1878 | cbex.ec_len = ext4_ext_get_actual_len(ex); |
| 1926 | cbex.ec_start = ext_pblock(ex); | 1879 | cbex.ec_start = ext4_ext_pblock(ex); |
| 1927 | cbex.ec_type = EXT4_EXT_CACHE_EXTENT; | 1880 | cbex.ec_type = EXT4_EXT_CACHE_EXTENT; |
| 1928 | } | 1881 | } |
| 1929 | 1882 | ||
| @@ -2073,7 +2026,7 @@ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, | |||
| 2073 | 2026 | ||
| 2074 | /* free index block */ | 2027 | /* free index block */ |
| 2075 | path--; | 2028 | path--; |
| 2076 | leaf = idx_pblock(path->p_idx); | 2029 | leaf = ext4_idx_pblock(path->p_idx); |
| 2077 | if (unlikely(path->p_hdr->eh_entries == 0)) { | 2030 | if (unlikely(path->p_hdr->eh_entries == 0)) { |
| 2078 | EXT4_ERROR_INODE(inode, "path->p_hdr->eh_entries == 0"); | 2031 | EXT4_ERROR_INODE(inode, "path->p_hdr->eh_entries == 0"); |
| 2079 | return -EIO; | 2032 | return -EIO; |
| @@ -2181,7 +2134,7 @@ static int ext4_remove_blocks(handle_t *handle, struct inode *inode, | |||
| 2181 | ext4_fsblk_t start; | 2134 | ext4_fsblk_t start; |
| 2182 | 2135 | ||
| 2183 | num = le32_to_cpu(ex->ee_block) + ee_len - from; | 2136 | num = le32_to_cpu(ex->ee_block) + ee_len - from; |
| 2184 | start = ext_pblock(ex) + ee_len - num; | 2137 | start = ext4_ext_pblock(ex) + ee_len - num; |
| 2185 | ext_debug("free last %u blocks starting %llu\n", num, start); | 2138 | ext_debug("free last %u blocks starting %llu\n", num, start); |
| 2186 | ext4_free_blocks(handle, inode, 0, start, num, flags); | 2139 | ext4_free_blocks(handle, inode, 0, start, num, flags); |
| 2187 | } else if (from == le32_to_cpu(ex->ee_block) | 2140 | } else if (from == le32_to_cpu(ex->ee_block) |
| @@ -2310,7 +2263,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, | |||
| 2310 | goto out; | 2263 | goto out; |
| 2311 | 2264 | ||
| 2312 | ext_debug("new extent: %u:%u:%llu\n", block, num, | 2265 | ext_debug("new extent: %u:%u:%llu\n", block, num, |
| 2313 | ext_pblock(ex)); | 2266 | ext4_ext_pblock(ex)); |
| 2314 | ex--; | 2267 | ex--; |
| 2315 | ex_ee_block = le32_to_cpu(ex->ee_block); | 2268 | ex_ee_block = le32_to_cpu(ex->ee_block); |
| 2316 | ex_ee_len = ext4_ext_get_actual_len(ex); | 2269 | ex_ee_len = ext4_ext_get_actual_len(ex); |
| @@ -2421,9 +2374,9 @@ again: | |||
| 2421 | struct buffer_head *bh; | 2374 | struct buffer_head *bh; |
| 2422 | /* go to the next level */ | 2375 | /* go to the next level */ |
| 2423 | ext_debug("move to level %d (block %llu)\n", | 2376 | ext_debug("move to level %d (block %llu)\n", |
| 2424 | i + 1, idx_pblock(path[i].p_idx)); | 2377 | i + 1, ext4_idx_pblock(path[i].p_idx)); |
| 2425 | memset(path + i + 1, 0, sizeof(*path)); | 2378 | memset(path + i + 1, 0, sizeof(*path)); |
| 2426 | bh = sb_bread(sb, idx_pblock(path[i].p_idx)); | 2379 | bh = sb_bread(sb, ext4_idx_pblock(path[i].p_idx)); |
| 2427 | if (!bh) { | 2380 | if (!bh) { |
| 2428 | /* should we reset i_size? */ | 2381 | /* should we reset i_size? */ |
| 2429 | err = -EIO; | 2382 | err = -EIO; |
| @@ -2543,7 +2496,7 @@ static int ext4_ext_zeroout(struct inode *inode, struct ext4_extent *ex) | |||
| 2543 | int ret; | 2496 | int ret; |
| 2544 | 2497 | ||
| 2545 | ee_len = ext4_ext_get_actual_len(ex); | 2498 | ee_len = ext4_ext_get_actual_len(ex); |
| 2546 | ee_pblock = ext_pblock(ex); | 2499 | ee_pblock = ext4_ext_pblock(ex); |
| 2547 | 2500 | ||
| 2548 | ret = sb_issue_zeroout(inode->i_sb, ee_pblock, ee_len, | 2501 | ret = sb_issue_zeroout(inode->i_sb, ee_pblock, ee_len, |
| 2549 | GFP_NOFS, BLKDEV_IFL_WAIT); | 2502 | GFP_NOFS, BLKDEV_IFL_WAIT); |
| @@ -2596,12 +2549,12 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2596 | ee_block = le32_to_cpu(ex->ee_block); | 2549 | ee_block = le32_to_cpu(ex->ee_block); |
| 2597 | ee_len = ext4_ext_get_actual_len(ex); | 2550 | ee_len = ext4_ext_get_actual_len(ex); |
| 2598 | allocated = ee_len - (map->m_lblk - ee_block); | 2551 | allocated = ee_len - (map->m_lblk - ee_block); |
| 2599 | newblock = map->m_lblk - ee_block + ext_pblock(ex); | 2552 | newblock = map->m_lblk - ee_block + ext4_ext_pblock(ex); |
| 2600 | 2553 | ||
| 2601 | ex2 = ex; | 2554 | ex2 = ex; |
| 2602 | orig_ex.ee_block = ex->ee_block; | 2555 | orig_ex.ee_block = ex->ee_block; |
| 2603 | orig_ex.ee_len = cpu_to_le16(ee_len); | 2556 | orig_ex.ee_len = cpu_to_le16(ee_len); |
| 2604 | ext4_ext_store_pblock(&orig_ex, ext_pblock(ex)); | 2557 | ext4_ext_store_pblock(&orig_ex, ext4_ext_pblock(ex)); |
| 2605 | 2558 | ||
| 2606 | /* | 2559 | /* |
| 2607 | * It is safe to convert extent to initialized via explicit | 2560 | * It is safe to convert extent to initialized via explicit |
| @@ -2620,7 +2573,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2620 | /* update the extent length and mark as initialized */ | 2573 | /* update the extent length and mark as initialized */ |
| 2621 | ex->ee_block = orig_ex.ee_block; | 2574 | ex->ee_block = orig_ex.ee_block; |
| 2622 | ex->ee_len = orig_ex.ee_len; | 2575 | ex->ee_len = orig_ex.ee_len; |
| 2623 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2576 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2624 | ext4_ext_dirty(handle, inode, path + depth); | 2577 | ext4_ext_dirty(handle, inode, path + depth); |
| 2625 | /* zeroed the full extent */ | 2578 | /* zeroed the full extent */ |
| 2626 | return allocated; | 2579 | return allocated; |
| @@ -2655,7 +2608,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2655 | ex->ee_block = orig_ex.ee_block; | 2608 | ex->ee_block = orig_ex.ee_block; |
| 2656 | ex->ee_len = cpu_to_le16(ee_len - allocated); | 2609 | ex->ee_len = cpu_to_le16(ee_len - allocated); |
| 2657 | ext4_ext_mark_uninitialized(ex); | 2610 | ext4_ext_mark_uninitialized(ex); |
| 2658 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2611 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2659 | ext4_ext_dirty(handle, inode, path + depth); | 2612 | ext4_ext_dirty(handle, inode, path + depth); |
| 2660 | 2613 | ||
| 2661 | ex3 = &newex; | 2614 | ex3 = &newex; |
| @@ -2670,7 +2623,8 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2670 | goto fix_extent_len; | 2623 | goto fix_extent_len; |
| 2671 | ex->ee_block = orig_ex.ee_block; | 2624 | ex->ee_block = orig_ex.ee_block; |
| 2672 | ex->ee_len = orig_ex.ee_len; | 2625 | ex->ee_len = orig_ex.ee_len; |
| 2673 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2626 | ext4_ext_store_pblock(ex, |
| 2627 | ext4_ext_pblock(&orig_ex)); | ||
| 2674 | ext4_ext_dirty(handle, inode, path + depth); | 2628 | ext4_ext_dirty(handle, inode, path + depth); |
| 2675 | /* blocks available from map->m_lblk */ | 2629 | /* blocks available from map->m_lblk */ |
| 2676 | return allocated; | 2630 | return allocated; |
| @@ -2727,7 +2681,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2727 | /* update the extent length and mark as initialized */ | 2681 | /* update the extent length and mark as initialized */ |
| 2728 | ex->ee_block = orig_ex.ee_block; | 2682 | ex->ee_block = orig_ex.ee_block; |
| 2729 | ex->ee_len = orig_ex.ee_len; | 2683 | ex->ee_len = orig_ex.ee_len; |
| 2730 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2684 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2731 | ext4_ext_dirty(handle, inode, path + depth); | 2685 | ext4_ext_dirty(handle, inode, path + depth); |
| 2732 | /* zeroed the full extent */ | 2686 | /* zeroed the full extent */ |
| 2733 | /* blocks available from map->m_lblk */ | 2687 | /* blocks available from map->m_lblk */ |
| @@ -2778,7 +2732,7 @@ static int ext4_ext_convert_to_initialized(handle_t *handle, | |||
| 2778 | /* update the extent length and mark as initialized */ | 2732 | /* update the extent length and mark as initialized */ |
| 2779 | ex->ee_block = orig_ex.ee_block; | 2733 | ex->ee_block = orig_ex.ee_block; |
| 2780 | ex->ee_len = orig_ex.ee_len; | 2734 | ex->ee_len = orig_ex.ee_len; |
| 2781 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2735 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2782 | ext4_ext_dirty(handle, inode, path + depth); | 2736 | ext4_ext_dirty(handle, inode, path + depth); |
| 2783 | /* zero out the first half */ | 2737 | /* zero out the first half */ |
| 2784 | /* blocks available from map->m_lblk */ | 2738 | /* blocks available from map->m_lblk */ |
| @@ -2847,7 +2801,7 @@ insert: | |||
| 2847 | /* update the extent length and mark as initialized */ | 2801 | /* update the extent length and mark as initialized */ |
| 2848 | ex->ee_block = orig_ex.ee_block; | 2802 | ex->ee_block = orig_ex.ee_block; |
| 2849 | ex->ee_len = orig_ex.ee_len; | 2803 | ex->ee_len = orig_ex.ee_len; |
| 2850 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2804 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2851 | ext4_ext_dirty(handle, inode, path + depth); | 2805 | ext4_ext_dirty(handle, inode, path + depth); |
| 2852 | /* zero out the first half */ | 2806 | /* zero out the first half */ |
| 2853 | return allocated; | 2807 | return allocated; |
| @@ -2860,7 +2814,7 @@ out: | |||
| 2860 | fix_extent_len: | 2814 | fix_extent_len: |
| 2861 | ex->ee_block = orig_ex.ee_block; | 2815 | ex->ee_block = orig_ex.ee_block; |
| 2862 | ex->ee_len = orig_ex.ee_len; | 2816 | ex->ee_len = orig_ex.ee_len; |
| 2863 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2817 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2864 | ext4_ext_mark_uninitialized(ex); | 2818 | ext4_ext_mark_uninitialized(ex); |
| 2865 | ext4_ext_dirty(handle, inode, path + depth); | 2819 | ext4_ext_dirty(handle, inode, path + depth); |
| 2866 | return err; | 2820 | return err; |
| @@ -2918,12 +2872,12 @@ static int ext4_split_unwritten_extents(handle_t *handle, | |||
| 2918 | ee_block = le32_to_cpu(ex->ee_block); | 2872 | ee_block = le32_to_cpu(ex->ee_block); |
| 2919 | ee_len = ext4_ext_get_actual_len(ex); | 2873 | ee_len = ext4_ext_get_actual_len(ex); |
| 2920 | allocated = ee_len - (map->m_lblk - ee_block); | 2874 | allocated = ee_len - (map->m_lblk - ee_block); |
| 2921 | newblock = map->m_lblk - ee_block + ext_pblock(ex); | 2875 | newblock = map->m_lblk - ee_block + ext4_ext_pblock(ex); |
| 2922 | 2876 | ||
| 2923 | ex2 = ex; | 2877 | ex2 = ex; |
| 2924 | orig_ex.ee_block = ex->ee_block; | 2878 | orig_ex.ee_block = ex->ee_block; |
| 2925 | orig_ex.ee_len = cpu_to_le16(ee_len); | 2879 | orig_ex.ee_len = cpu_to_le16(ee_len); |
| 2926 | ext4_ext_store_pblock(&orig_ex, ext_pblock(ex)); | 2880 | ext4_ext_store_pblock(&orig_ex, ext4_ext_pblock(ex)); |
| 2927 | 2881 | ||
| 2928 | /* | 2882 | /* |
| 2929 | * It is safe to convert extent to initialized via explicit | 2883 | * It is safe to convert extent to initialized via explicit |
| @@ -2972,7 +2926,7 @@ static int ext4_split_unwritten_extents(handle_t *handle, | |||
| 2972 | /* update the extent length and mark as initialized */ | 2926 | /* update the extent length and mark as initialized */ |
| 2973 | ex->ee_block = orig_ex.ee_block; | 2927 | ex->ee_block = orig_ex.ee_block; |
| 2974 | ex->ee_len = orig_ex.ee_len; | 2928 | ex->ee_len = orig_ex.ee_len; |
| 2975 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 2929 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 2976 | ext4_ext_dirty(handle, inode, path + depth); | 2930 | ext4_ext_dirty(handle, inode, path + depth); |
| 2977 | /* zeroed the full extent */ | 2931 | /* zeroed the full extent */ |
| 2978 | /* blocks available from map->m_lblk */ | 2932 | /* blocks available from map->m_lblk */ |
| @@ -3044,7 +2998,7 @@ insert: | |||
| 3044 | /* update the extent length and mark as initialized */ | 2998 | /* update the extent length and mark as initialized */ |
| 3045 | ex->ee_block = orig_ex.ee_block; | 2999 | ex->ee_block = orig_ex.ee_block; |
| 3046 | ex->ee_len = orig_ex.ee_len; | 3000 | ex->ee_len = orig_ex.ee_len; |
| 3047 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 3001 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 3048 | ext4_ext_dirty(handle, inode, path + depth); | 3002 | ext4_ext_dirty(handle, inode, path + depth); |
| 3049 | /* zero out the first half */ | 3003 | /* zero out the first half */ |
| 3050 | return allocated; | 3004 | return allocated; |
| @@ -3057,7 +3011,7 @@ out: | |||
| 3057 | fix_extent_len: | 3011 | fix_extent_len: |
| 3058 | ex->ee_block = orig_ex.ee_block; | 3012 | ex->ee_block = orig_ex.ee_block; |
| 3059 | ex->ee_len = orig_ex.ee_len; | 3013 | ex->ee_len = orig_ex.ee_len; |
| 3060 | ext4_ext_store_pblock(ex, ext_pblock(&orig_ex)); | 3014 | ext4_ext_store_pblock(ex, ext4_ext_pblock(&orig_ex)); |
| 3061 | ext4_ext_mark_uninitialized(ex); | 3015 | ext4_ext_mark_uninitialized(ex); |
| 3062 | ext4_ext_dirty(handle, inode, path + depth); | 3016 | ext4_ext_dirty(handle, inode, path + depth); |
| 3063 | return err; | 3017 | return err; |
| @@ -3347,7 +3301,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, | |||
| 3347 | /* block is already allocated */ | 3301 | /* block is already allocated */ |
| 3348 | newblock = map->m_lblk | 3302 | newblock = map->m_lblk |
| 3349 | - le32_to_cpu(newex.ee_block) | 3303 | - le32_to_cpu(newex.ee_block) |
| 3350 | + ext_pblock(&newex); | 3304 | + ext4_ext_pblock(&newex); |
| 3351 | /* number of remaining blocks in the extent */ | 3305 | /* number of remaining blocks in the extent */ |
| 3352 | allocated = ext4_ext_get_actual_len(&newex) - | 3306 | allocated = ext4_ext_get_actual_len(&newex) - |
| 3353 | (map->m_lblk - le32_to_cpu(newex.ee_block)); | 3307 | (map->m_lblk - le32_to_cpu(newex.ee_block)); |
| @@ -3385,7 +3339,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, | |||
| 3385 | ex = path[depth].p_ext; | 3339 | ex = path[depth].p_ext; |
| 3386 | if (ex) { | 3340 | if (ex) { |
| 3387 | ext4_lblk_t ee_block = le32_to_cpu(ex->ee_block); | 3341 | ext4_lblk_t ee_block = le32_to_cpu(ex->ee_block); |
| 3388 | ext4_fsblk_t ee_start = ext_pblock(ex); | 3342 | ext4_fsblk_t ee_start = ext4_ext_pblock(ex); |
| 3389 | unsigned short ee_len; | 3343 | unsigned short ee_len; |
| 3390 | 3344 | ||
| 3391 | /* | 3345 | /* |
| @@ -3513,13 +3467,13 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, | |||
| 3513 | /* not a good idea to call discard here directly, | 3467 | /* not a good idea to call discard here directly, |
| 3514 | * but otherwise we'd need to call it every free() */ | 3468 | * but otherwise we'd need to call it every free() */ |
| 3515 | ext4_discard_preallocations(inode); | 3469 | ext4_discard_preallocations(inode); |
| 3516 | ext4_free_blocks(handle, inode, 0, ext_pblock(&newex), | 3470 | ext4_free_blocks(handle, inode, 0, ext4_ext_pblock(&newex), |
| 3517 | ext4_ext_get_actual_len(&newex), 0); | 3471 | ext4_ext_get_actual_len(&newex), 0); |
| 3518 | goto out2; | 3472 | goto out2; |
| 3519 | } | 3473 | } |
| 3520 | 3474 | ||
| 3521 | /* previous routine could use block we allocated */ | 3475 | /* previous routine could use block we allocated */ |
| 3522 | newblock = ext_pblock(&newex); | 3476 | newblock = ext4_ext_pblock(&newex); |
| 3523 | allocated = ext4_ext_get_actual_len(&newex); | 3477 | allocated = ext4_ext_get_actual_len(&newex); |
| 3524 | if (allocated > map->m_len) | 3478 | if (allocated > map->m_len) |
| 3525 | allocated = map->m_len; | 3479 | allocated = map->m_len; |
diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c index 1765c2c50a9..25f3a974b72 100644 --- a/fs/ext4/migrate.c +++ b/fs/ext4/migrate.c | |||
| @@ -412,7 +412,7 @@ static int free_ext_idx(handle_t *handle, struct inode *inode, | |||
| 412 | struct buffer_head *bh; | 412 | struct buffer_head *bh; |
| 413 | struct ext4_extent_header *eh; | 413 | struct ext4_extent_header *eh; |
| 414 | 414 | ||
| 415 | block = idx_pblock(ix); | 415 | block = ext4_idx_pblock(ix); |
| 416 | bh = sb_bread(inode->i_sb, block); | 416 | bh = sb_bread(inode->i_sb, block); |
| 417 | if (!bh) | 417 | if (!bh) |
| 418 | return -EIO; | 418 | return -EIO; |
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c index 5f1ed9fc913..b9f3e7862f1 100644 --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c | |||
| @@ -85,7 +85,7 @@ mext_next_extent(struct inode *inode, struct ext4_ext_path *path, | |||
| 85 | if (EXT_LAST_EXTENT(path[ppos].p_hdr) > path[ppos].p_ext) { | 85 | if (EXT_LAST_EXTENT(path[ppos].p_hdr) > path[ppos].p_ext) { |
| 86 | /* leaf block */ | 86 | /* leaf block */ |
| 87 | *extent = ++path[ppos].p_ext; | 87 | *extent = ++path[ppos].p_ext; |
| 88 | path[ppos].p_block = ext_pblock(path[ppos].p_ext); | 88 | path[ppos].p_block = ext4_ext_pblock(path[ppos].p_ext); |
| 89 | return 0; | 89 | return 0; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| @@ -96,7 +96,7 @@ mext_next_extent(struct inode *inode, struct ext4_ext_path *path, | |||
| 96 | 96 | ||
| 97 | /* index block */ | 97 | /* index block */ |
| 98 | path[ppos].p_idx++; | 98 | path[ppos].p_idx++; |
| 99 | path[ppos].p_block = idx_pblock(path[ppos].p_idx); | 99 | path[ppos].p_block = ext4_idx_pblock(path[ppos].p_idx); |
| 100 | if (path[ppos+1].p_bh) | 100 | if (path[ppos+1].p_bh) |
| 101 | brelse(path[ppos+1].p_bh); | 101 | brelse(path[ppos+1].p_bh); |
| 102 | path[ppos+1].p_bh = | 102 | path[ppos+1].p_bh = |
| @@ -111,7 +111,7 @@ mext_next_extent(struct inode *inode, struct ext4_ext_path *path, | |||
| 111 | path[cur_ppos].p_idx = | 111 | path[cur_ppos].p_idx = |
| 112 | EXT_FIRST_INDEX(path[cur_ppos].p_hdr); | 112 | EXT_FIRST_INDEX(path[cur_ppos].p_hdr); |
| 113 | path[cur_ppos].p_block = | 113 | path[cur_ppos].p_block = |
| 114 | idx_pblock(path[cur_ppos].p_idx); | 114 | ext4_idx_pblock(path[cur_ppos].p_idx); |
| 115 | if (path[cur_ppos+1].p_bh) | 115 | if (path[cur_ppos+1].p_bh) |
| 116 | brelse(path[cur_ppos+1].p_bh); | 116 | brelse(path[cur_ppos+1].p_bh); |
| 117 | path[cur_ppos+1].p_bh = sb_bread(inode->i_sb, | 117 | path[cur_ppos+1].p_bh = sb_bread(inode->i_sb, |
| @@ -133,7 +133,7 @@ mext_next_extent(struct inode *inode, struct ext4_ext_path *path, | |||
| 133 | path[leaf_ppos].p_ext = *extent = | 133 | path[leaf_ppos].p_ext = *extent = |
| 134 | EXT_FIRST_EXTENT(path[leaf_ppos].p_hdr); | 134 | EXT_FIRST_EXTENT(path[leaf_ppos].p_hdr); |
| 135 | path[leaf_ppos].p_block = | 135 | path[leaf_ppos].p_block = |
| 136 | ext_pblock(path[leaf_ppos].p_ext); | 136 | ext4_ext_pblock(path[leaf_ppos].p_ext); |
| 137 | return 0; | 137 | return 0; |
| 138 | } | 138 | } |
| 139 | } | 139 | } |
| @@ -249,7 +249,7 @@ mext_insert_across_blocks(handle_t *handle, struct inode *orig_inode, | |||
| 249 | */ | 249 | */ |
| 250 | o_end->ee_block = end_ext->ee_block; | 250 | o_end->ee_block = end_ext->ee_block; |
| 251 | o_end->ee_len = end_ext->ee_len; | 251 | o_end->ee_len = end_ext->ee_len; |
| 252 | ext4_ext_store_pblock(o_end, ext_pblock(end_ext)); | 252 | ext4_ext_store_pblock(o_end, ext4_ext_pblock(end_ext)); |
| 253 | } | 253 | } |
| 254 | 254 | ||
| 255 | o_start->ee_len = start_ext->ee_len; | 255 | o_start->ee_len = start_ext->ee_len; |
| @@ -276,7 +276,7 @@ mext_insert_across_blocks(handle_t *handle, struct inode *orig_inode, | |||
| 276 | */ | 276 | */ |
| 277 | o_end->ee_block = end_ext->ee_block; | 277 | o_end->ee_block = end_ext->ee_block; |
| 278 | o_end->ee_len = end_ext->ee_len; | 278 | o_end->ee_len = end_ext->ee_len; |
| 279 | ext4_ext_store_pblock(o_end, ext_pblock(end_ext)); | 279 | ext4_ext_store_pblock(o_end, ext4_ext_pblock(end_ext)); |
| 280 | 280 | ||
| 281 | /* | 281 | /* |
| 282 | * Set 0 to the extent block if new_ext was | 282 | * Set 0 to the extent block if new_ext was |
| @@ -361,7 +361,7 @@ mext_insert_inside_block(struct ext4_extent *o_start, | |||
| 361 | /* Insert new entry */ | 361 | /* Insert new entry */ |
| 362 | if (new_ext->ee_len) { | 362 | if (new_ext->ee_len) { |
| 363 | o_start[i] = *new_ext; | 363 | o_start[i] = *new_ext; |
| 364 | ext4_ext_store_pblock(&o_start[i++], ext_pblock(new_ext)); | 364 | ext4_ext_store_pblock(&o_start[i++], ext4_ext_pblock(new_ext)); |
| 365 | } | 365 | } |
| 366 | 366 | ||
| 367 | /* Insert end entry */ | 367 | /* Insert end entry */ |
| @@ -488,7 +488,7 @@ mext_leaf_block(handle_t *handle, struct inode *orig_inode, | |||
| 488 | start_ext.ee_len = end_ext.ee_len = 0; | 488 | start_ext.ee_len = end_ext.ee_len = 0; |
| 489 | 489 | ||
| 490 | new_ext.ee_block = cpu_to_le32(*from); | 490 | new_ext.ee_block = cpu_to_le32(*from); |
| 491 | ext4_ext_store_pblock(&new_ext, ext_pblock(dext)); | 491 | ext4_ext_store_pblock(&new_ext, ext4_ext_pblock(dext)); |
| 492 | new_ext.ee_len = dext->ee_len; | 492 | new_ext.ee_len = dext->ee_len; |
| 493 | new_ext_alen = ext4_ext_get_actual_len(&new_ext); | 493 | new_ext_alen = ext4_ext_get_actual_len(&new_ext); |
| 494 | new_ext_end = le32_to_cpu(new_ext.ee_block) + new_ext_alen - 1; | 494 | new_ext_end = le32_to_cpu(new_ext.ee_block) + new_ext_alen - 1; |
| @@ -553,7 +553,7 @@ mext_leaf_block(handle_t *handle, struct inode *orig_inode, | |||
| 553 | copy_extent_status(oext, &end_ext); | 553 | copy_extent_status(oext, &end_ext); |
| 554 | end_ext_alen = ext4_ext_get_actual_len(&end_ext); | 554 | end_ext_alen = ext4_ext_get_actual_len(&end_ext); |
| 555 | ext4_ext_store_pblock(&end_ext, | 555 | ext4_ext_store_pblock(&end_ext, |
| 556 | (ext_pblock(o_end) + oext_alen - end_ext_alen)); | 556 | (ext4_ext_pblock(o_end) + oext_alen - end_ext_alen)); |
| 557 | end_ext.ee_block = | 557 | end_ext.ee_block = |
| 558 | cpu_to_le32(le32_to_cpu(o_end->ee_block) + | 558 | cpu_to_le32(le32_to_cpu(o_end->ee_block) + |
| 559 | oext_alen - end_ext_alen); | 559 | oext_alen - end_ext_alen); |
| @@ -604,7 +604,7 @@ mext_calc_swap_extents(struct ext4_extent *tmp_dext, | |||
| 604 | /* When tmp_dext is too large, pick up the target range. */ | 604 | /* When tmp_dext is too large, pick up the target range. */ |
| 605 | diff = donor_off - le32_to_cpu(tmp_dext->ee_block); | 605 | diff = donor_off - le32_to_cpu(tmp_dext->ee_block); |
| 606 | 606 | ||
| 607 | ext4_ext_store_pblock(tmp_dext, ext_pblock(tmp_dext) + diff); | 607 | ext4_ext_store_pblock(tmp_dext, ext4_ext_pblock(tmp_dext) + diff); |
| 608 | tmp_dext->ee_block = | 608 | tmp_dext->ee_block = |
| 609 | cpu_to_le32(le32_to_cpu(tmp_dext->ee_block) + diff); | 609 | cpu_to_le32(le32_to_cpu(tmp_dext->ee_block) + diff); |
| 610 | tmp_dext->ee_len = cpu_to_le16(le16_to_cpu(tmp_dext->ee_len) - diff); | 610 | tmp_dext->ee_len = cpu_to_le16(le16_to_cpu(tmp_dext->ee_len) - diff); |
| @@ -613,7 +613,7 @@ mext_calc_swap_extents(struct ext4_extent *tmp_dext, | |||
| 613 | tmp_dext->ee_len = cpu_to_le16(max_count); | 613 | tmp_dext->ee_len = cpu_to_le16(max_count); |
| 614 | 614 | ||
| 615 | orig_diff = orig_off - le32_to_cpu(tmp_oext->ee_block); | 615 | orig_diff = orig_off - le32_to_cpu(tmp_oext->ee_block); |
| 616 | ext4_ext_store_pblock(tmp_oext, ext_pblock(tmp_oext) + orig_diff); | 616 | ext4_ext_store_pblock(tmp_oext, ext4_ext_pblock(tmp_oext) + orig_diff); |
| 617 | 617 | ||
| 618 | /* Adjust extent length if donor extent is larger than orig */ | 618 | /* Adjust extent length if donor extent is larger than orig */ |
| 619 | if (ext4_ext_get_actual_len(tmp_dext) > | 619 | if (ext4_ext_get_actual_len(tmp_dext) > |
