Skip to content

Commit e9f410b

Browse files
Dmitry Monakhovtytso
authored andcommitted
ext4: extent macros cleanup
Use the EXT_LAST_INDEX macro; that's what it's there for. Clean up ext4_ext_ext_grow_indepth() so the correct EXT_FIRST_INDEX or EXT_FIRST_MACRO is used as necessary. The two macros are equivalent, so the C will collapse the if statement out, but it makes the code much more readable. Signed-off-by: Dmitry Monakhov <[email protected]> Acked-by: Alex Tomas <[email protected]> Signed-off-by: Dave Kleikamp <[email protected]> Singed-off-by: Mingming Cao <[email protected]> Signed-off-by: "Theodore Ts'o" <[email protected]>
1 parent 26d535e commit e9f410b

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

fs/ext4/extents.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ ext4_ext_binsearch_idx(struct inode *inode, struct ext4_ext_path *path, int bloc
376376
ext_debug("binsearch for %d(idx): ", block);
377377

378378
l = EXT_FIRST_INDEX(eh) + 1;
379-
r = EXT_FIRST_INDEX(eh) + le16_to_cpu(eh->eh_entries) - 1;
379+
r = EXT_LAST_INDEX(eh);
380380
while (l <= r) {
381381
m = l + (r - l) / 2;
382382
if (block < le32_to_cpu(m->ei_block))
@@ -441,7 +441,7 @@ ext4_ext_binsearch(struct inode *inode, struct ext4_ext_path *path, int block)
441441
ext_debug("binsearch for %d: ", block);
442442

443443
l = EXT_FIRST_EXTENT(eh) + 1;
444-
r = EXT_FIRST_EXTENT(eh) + le16_to_cpu(eh->eh_entries) - 1;
444+
r = EXT_LAST_EXTENT(eh);
445445

446446
while (l <= r) {
447447
m = l + (r - l) / 2;
@@ -924,8 +924,13 @@ static int ext4_ext_grow_indepth(handle_t *handle, struct inode *inode,
924924
curp->p_hdr->eh_max = cpu_to_le16(ext4_ext_space_root_idx(inode));
925925
curp->p_hdr->eh_entries = cpu_to_le16(1);
926926
curp->p_idx = EXT_FIRST_INDEX(curp->p_hdr);
927-
/* FIXME: it works, but actually path[0] can be index */
928-
curp->p_idx->ei_block = EXT_FIRST_EXTENT(path[0].p_hdr)->ee_block;
927+
928+
if (path[0].p_hdr->eh_depth)
929+
curp->p_idx->ei_block =
930+
EXT_FIRST_INDEX(path[0].p_hdr)->ei_block;
931+
else
932+
curp->p_idx->ei_block =
933+
EXT_FIRST_EXTENT(path[0].p_hdr)->ee_block;
929934
ext4_idx_store_pblock(curp->p_idx, newblock);
930935

931936
neh = ext_inode_hdr(inode);

0 commit comments

Comments
 (0)