diff options
author | Filipe Manana <fdmanana@suse.com> | 2020-03-09 12:41:06 +0000 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2020-03-23 17:01:56 +0100 |
commit | a5eeb3d17b979f7afe3ac68fe049ce8b0a039b03 (patch) | |
tree | cec688f519eb065bb76848cedc76cb0eb0df5337 /fs/btrfs/inode.c | |
parent | 95418ed1d10774cd9a49af6f39e216c1256f1eeb (diff) | |
download | lwn-a5eeb3d17b979f7afe3ac68fe049ce8b0a039b03.tar.gz lwn-a5eeb3d17b979f7afe3ac68fe049ce8b0a039b03.zip |
btrfs: add helper to get the end offset of a file extent item
Getting the end offset for a file extent item requires a bit of code since
the extent can be either inline or regular/prealloc. There are some places
all over the code base that open code this logic and in another patch
later in this series it will be needed again. Therefore encapsulate this
logic in a helper function and use it.
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index f85051d0390f..d31543350799 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -6521,6 +6521,7 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, extent_type = btrfs_file_extent_type(leaf, item); extent_start = found_key.offset; + extent_end = btrfs_file_extent_end(path); if (extent_type == BTRFS_FILE_EXTENT_REG || extent_type == BTRFS_FILE_EXTENT_PREALLOC) { /* Only regular file could have regular/prealloc extent */ @@ -6531,18 +6532,9 @@ struct extent_map *btrfs_get_extent(struct btrfs_inode *inode, btrfs_ino(inode)); goto out; } - extent_end = extent_start + - btrfs_file_extent_num_bytes(leaf, item); - trace_btrfs_get_extent_show_fi_regular(inode, leaf, item, extent_start); } else if (extent_type == BTRFS_FILE_EXTENT_INLINE) { - size_t size; - - size = btrfs_file_extent_ram_bytes(leaf, item); - extent_end = ALIGN(extent_start + size, - fs_info->sectorsize); - trace_btrfs_get_extent_show_fi_inline(inode, leaf, item, path->slots[0], extent_start); |