summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2024-04-11 11:32:14 +0100
committerDavid Sterba <dsterba@suse.com>2024-05-07 21:31:06 +0200
commit5fa8a6baff817c1b427aa7a8bfc1482043be6d58 (patch)
tree0eb8e7a4d30beb58ce6bb5c2dcfeee54b8c2d3b8 /fs
parente778724a5ef04e7144cb766a6904bdbe842695ee (diff)
downloadlinux-stable-5fa8a6baff817c1b427aa7a8bfc1482043be6d58.tar.gz
linux-stable-5fa8a6baff817c1b427aa7a8bfc1482043be6d58.tar.bz2
linux-stable-5fa8a6baff817c1b427aa7a8bfc1482043be6d58.zip
btrfs: pass the extent map tree's inode to try_merge_map()
Extent maps are always associated to an inode's extent map tree, so there's no need to pass the extent map tree explicitly to try_merge_map(). In order to facilitate an upcoming change that adds a shrinker for extent maps, change try_merge_map() to receive the inode instead of its extent map tree. Reviewed-by: Qu Wenruo <wqu@suse.com> 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')
-rw-r--r--fs/btrfs/extent_map.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 0d9066865dfb..fca08ac95a4a 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -223,8 +223,9 @@ static bool mergeable_maps(const struct extent_map *prev, const struct extent_ma
return next->block_start == prev->block_start;
}
-static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
+static void try_merge_map(struct btrfs_inode *inode, struct extent_map *em)
{
+ struct extent_map_tree *tree = &inode->extent_tree;
struct extent_map *merge = NULL;
struct rb_node *rb;
@@ -322,7 +323,7 @@ int unpin_extent_cache(struct btrfs_inode *inode, u64 start, u64 len, u64 gen)
em->generation = gen;
em->flags &= ~EXTENT_FLAG_PINNED;
- try_merge_map(tree, em);
+ try_merge_map(inode, em);
out:
write_unlock(&tree->lock);
@@ -333,13 +334,11 @@ out:
void clear_em_logging(struct btrfs_inode *inode, struct extent_map *em)
{
- struct extent_map_tree *tree = &inode->extent_tree;
-
- lockdep_assert_held_write(&tree->lock);
+ lockdep_assert_held_write(&inode->extent_tree.lock);
em->flags &= ~EXTENT_FLAG_LOGGING;
if (extent_map_in_tree(em))
- try_merge_map(tree, em);
+ try_merge_map(inode, em);
}
static inline void setup_extent_mapping(struct btrfs_inode *inode,
@@ -353,7 +352,7 @@ static inline void setup_extent_mapping(struct btrfs_inode *inode,
if (modified)
list_add(&em->list, &inode->extent_tree.modified_extents);
else
- try_merge_map(&inode->extent_tree, em);
+ try_merge_map(inode, em);
}
/*