btrfs: use the btrfs_extent_map_end() helper everywhere

We have a helper to calculate an extent map's exclusive end offset, but
we only use it in some places. Update every site that open codes the
calculation to use the helper.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Filipe Manana
2026-02-03 07:54:36 +01:00
committed by David Sterba
parent 4ac81c3811
commit ea7ab405c5
7 changed files with 28 additions and 26 deletions
+1 -1
View File
@@ -519,7 +519,7 @@ static noinline int add_ra_bio_pages(struct inode *inode,
folio_put(folio);
break;
}
add_size = min(em->start + em->len, page_end + 1) - cur;
add_size = min(btrfs_extent_map_end(em), page_end + 1) - cur;
btrfs_free_extent_map(em);
btrfs_unlock_extent(tree, cur, page_end, NULL);
+3 -2
View File
@@ -792,10 +792,11 @@ static bool defrag_check_next_extent(struct inode *inode, struct extent_map *em,
{
struct btrfs_fs_info *fs_info = inode_to_fs_info(inode);
struct extent_map *next;
const u64 em_end = btrfs_extent_map_end(em);
bool ret = false;
/* This is the last extent */
if (em->start + em->len >= i_size_read(inode))
if (em_end >= i_size_read(inode))
return false;
/*
@@ -804,7 +805,7 @@ static bool defrag_check_next_extent(struct inode *inode, struct extent_map *em,
* one will not be a target.
* This will just cause extra IO without really reducing the fragments.
*/
next = defrag_lookup_extent(inode, em->start + em->len, newer_than, locked);
next = defrag_lookup_extent(inode, em_end, newer_than, locked);
/* No more em or hole */
if (!next || next->disk_bytenr >= EXTENT_MAP_LAST_BYTE)
goto out;
+1 -1
View File
@@ -970,7 +970,7 @@ static void btrfs_readahead_expand(struct readahead_control *ractl,
{
const u64 ra_pos = readahead_pos(ractl);
const u64 ra_end = ra_pos + readahead_length(ractl);
const u64 em_end = em->start + em->len;
const u64 em_end = btrfs_extent_map_end(em);
/* No expansion for holes and inline extents. */
if (em->disk_bytenr > EXTENT_MAP_LAST_BYTE)
+5 -4
View File
@@ -2195,10 +2195,11 @@ static int find_first_non_hole(struct btrfs_inode *inode, u64 *start, u64 *len)
/* Hole or vacuum extent(only exists in no-hole mode) */
if (em->disk_bytenr == EXTENT_MAP_HOLE) {
const u64 em_end = btrfs_extent_map_end(em);
ret = 1;
*len = em->start + em->len > *start + *len ?
0 : *start + *len - em->start - em->len;
*start = em->start + em->len;
*len = (em_end > *start + *len) ? 0 : (*start + *len - em_end);
*start = em_end;
}
btrfs_free_extent_map(em);
return ret;
@@ -2947,7 +2948,7 @@ static int btrfs_zero_range(struct inode *inode,
* new prealloc extent, so that we get a larger contiguous disk extent.
*/
if (em->start <= alloc_start && (em->flags & EXTENT_FLAG_PREALLOC)) {
const u64 em_end = em->start + em->len;
const u64 em_end = btrfs_extent_map_end(em);
if (em_end >= offset + len) {
/*
+1 -1
View File
@@ -7161,7 +7161,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode,
read_unlock(&em_tree->lock);
if (em) {
if (em->start > start || em->start + em->len <= start)
if (em->start > start || btrfs_extent_map_end(em) <= start)
btrfs_free_extent_map(em);
else if (em->disk_bytenr == EXTENT_MAP_INLINE && folio)
btrfs_free_extent_map(em);
+16 -16
View File
@@ -313,7 +313,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
* unless we have a page for it to write into. Maybe we should change
* this?
*/
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -335,7 +335,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("unexpected flags set, want 0 have %u", em->flags);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* Regular extent */
@@ -362,7 +362,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("wrong offset, want 0, have %llu", em->offset);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* The next 3 are split extents */
@@ -391,7 +391,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
}
disk_bytenr = btrfs_extent_map_block_start(em);
orig_start = em->start;
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -413,7 +413,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("unexpected flags set, want 0 have %u", em->flags);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -446,7 +446,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
disk_bytenr, btrfs_extent_map_block_start(em));
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* Prealloc extent */
@@ -474,7 +474,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("wrong offset, want 0, have %llu", em->offset);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* The next 3 are a half written prealloc extent */
@@ -504,7 +504,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
}
disk_bytenr = btrfs_extent_map_block_start(em);
orig_start = em->start;
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -536,7 +536,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
disk_bytenr + em->offset, btrfs_extent_map_block_start(em));
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -569,7 +569,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
disk_bytenr + em->offset, btrfs_extent_map_block_start(em));
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* Now for the compressed extent */
@@ -602,7 +602,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
BTRFS_COMPRESS_ZLIB, btrfs_extent_map_compression(em));
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* Split compressed extent */
@@ -637,7 +637,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
}
disk_bytenr = btrfs_extent_map_block_start(em);
orig_start = em->start;
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -663,7 +663,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("wrong offset, want 0, have %llu", em->offset);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
@@ -697,7 +697,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
BTRFS_COMPRESS_ZLIB, btrfs_extent_map_compression(em));
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
/* A hole between regular extents but no hole extent */
@@ -724,7 +724,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("wrong offset, want 0, have %llu", em->offset);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, SZ_4M);
@@ -756,7 +756,7 @@ static noinline int test_btrfs_get_extent(u32 sectorsize, u32 nodesize)
test_err("wrong offset, want 0, have %llu", em->offset);
goto out;
}
offset = em->start + em->len;
offset = btrfs_extent_map_end(em);
btrfs_free_extent_map(em);
em = btrfs_get_extent(BTRFS_I(inode), NULL, offset, sectorsize);
+1 -1
View File
@@ -5160,7 +5160,7 @@ static int log_one_extent(struct btrfs_trans_handle *trans,
if (ctx->logged_before) {
drop_args.path = path;
drop_args.start = em->start;
drop_args.end = em->start + em->len;
drop_args.end = btrfs_extent_map_end(em);
drop_args.replace_extent = true;
drop_args.extent_item_size = sizeof(fi);
ret = btrfs_drop_extents(trans, log, inode, &drop_args);