summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2022-09-19 15:06:30 +0100
committerDavid Sterba <dsterba@suse.com>2022-09-29 17:08:30 +0200
commitf3109e33bb0a523f70a3394b51c878dbedb60528 (patch)
treeab32c5e8dad49a3a72f015495c90eb7bf04e99a2
parent4c0c8cfc8433457ed545e67df0d689d2e0de0746 (diff)
btrfs: use extent_map_end() at btrfs_drop_extent_map_range()
Instead of open coding the end offset calculation of an extent map, use the helper extent_map_end() and cache its result in a local variable, since it's used several times. Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/extent_map.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 587e0298bfab..28c5e0243adc 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -690,6 +690,7 @@ void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end,
}
while (1) {
struct extent_map *em;
+ u64 em_end;
u64 gen;
unsigned long flags;
bool ends_after_range = false;
@@ -710,7 +711,8 @@ void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end,
write_unlock(&em_tree->lock);
break;
}
- if (testend && em->start + em->len > start + len)
+ em_end = extent_map_end(em);
+ if (testend && em_end > start + len)
ends_after_range = true;
if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) {
if (ends_after_range) {
@@ -718,9 +720,9 @@ void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end,
write_unlock(&em_tree->lock);
break;
}
- start = em->start + em->len;
+ start = em_end;
if (testend)
- len = start + len - (em->start + em->len);
+ len = start + len - em_end;
free_extent_map(em);
write_unlock(&em_tree->lock);
continue;
@@ -767,7 +769,7 @@ void btrfs_drop_extent_map_range(struct btrfs_inode *inode, u64 start, u64 end,
}
if (ends_after_range) {
split->start = start + len;
- split->len = em->start + em->len - (start + len);
+ split->len = em_end - (start + len);
split->block_start = em->block_start;
split->flags = flags;
split->compress_type = em->compress_type;