From: Chris Mason Date: Tue, 18 Dec 2007 01:14:04 +0000 (-0500) Subject: Btrfs: Fix extent_map and extent_state leaks by flushing lrus on FS unmount X-Git-Tag: firefly_0821_release~15789^2~11^2~55^2~56^2~30^2~375 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d10c5f31c79c6a703974ae29d0a05781b828fe30;p=firefly-linux-kernel-4.4.55.git Btrfs: Fix extent_map and extent_state leaks by flushing lrus on FS unmount Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 4338b00c2a25..278564178993 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -765,8 +765,18 @@ int close_ctree(struct btrfs_root *root) btrfs_free_block_groups(root->fs_info); del_fs_roots(fs_info); + + filemap_write_and_wait(fs_info->btree_inode->i_mapping); + + extent_map_tree_empty_lru(&fs_info->free_space_cache); + extent_map_tree_empty_lru(&fs_info->block_group_cache); + extent_map_tree_empty_lru(&fs_info->pinned_extents); + extent_map_tree_empty_lru(&fs_info->pending_del); + extent_map_tree_empty_lru(&fs_info->extent_ins); extent_map_tree_empty_lru(&BTRFS_I(fs_info->btree_inode)->extent_tree); + truncate_inode_pages(fs_info->btree_inode->i_mapping, 0); + iput(fs_info->btree_inode); #if 0 while(!list_empty(&fs_info->hashers)) {