Message ID | 81628b9abb3ece8fd7e35a521068cfa958aca112.1712837044.git.fdmanana@suse.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | btrfs: add a shrinker for extent maps | expand |
在 2024/4/12 01:49, fdmanana@kernel.org 写道: > From: Filipe Manana <fdmanana@suse.com> > > 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. > > Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Thanks, Qu > --- > fs/btrfs/extent_map.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c > index 2753bf2964cb..97a8e0484415 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 @@ int unpin_extent_cache(struct btrfs_inode *inode, u64 start, u64 len, u64 gen) > > 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); > } > > /*
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c index 2753bf2964cb..97a8e0484415 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 @@ int unpin_extent_cache(struct btrfs_inode *inode, u64 start, u64 len, u64 gen) 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); } /*