mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
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:
committed by
David Sterba
parent
4ac81c3811
commit
ea7ab405c5
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user