+++ /dev/null
-From 4435b00db74bc79a6dac9a50a6d20538347076ec Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 21 Jan 2020 09:17:06 -0500
-Subject: btrfs: free block groups after free'ing fs trees
-
-From: Josef Bacik <josef@toxicpanda.com>
-
-[ Upstream commit 4e19443da1941050b346f8fc4c368aa68413bc88 ]
-
-Sometimes when running generic/475 we would trip the
-WARN_ON(cache->reserved) check when free'ing the block groups on umount.
-This is because sometimes we don't commit the transaction because of IO
-errors and thus do not cleanup the tree logs until at umount time.
-
-These blocks are still reserved until they are cleaned up, but they
-aren't cleaned up until _after_ we do the free block groups work. Fix
-this by moving the free after free'ing the fs roots, that way all of the
-tree logs are cleaned up and we have a properly cleaned fs. A bunch of
-loops of generic/475 confirmed this fixes the problem.
-
-CC: stable@vger.kernel.org # 4.9+
-Signed-off-by: Josef Bacik <josef@toxicpanda.com>
-Reviewed-by: David Sterba <dsterba@suse.com>
-Signed-off-by: David Sterba <dsterba@suse.com>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- fs/btrfs/disk-io.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
-index eab5a9065f093..439b5f5dc3274 100644
---- a/fs/btrfs/disk-io.c
-+++ b/fs/btrfs/disk-io.c
-@@ -3864,6 +3864,15 @@ void close_ctree(struct btrfs_root *root)
- clear_bit(BTRFS_FS_OPEN, &fs_info->flags);
- free_root_pointers(fs_info, true);
-
-+ /*
-+ * We must free the block groups after dropping the fs_roots as we could
-+ * have had an IO error and have left over tree log blocks that aren't
-+ * cleaned up until the fs roots are freed. This makes the block group
-+ * accounting appear to be wrong because there's pending reserved bytes,
-+ * so make sure we do the block group cleanup afterwards.
-+ */
-+ btrfs_free_block_groups(fs_info);
-+
- iput(fs_info->btree_inode);
-
- #ifdef CONFIG_BTRFS_FS_CHECK_INTEGRITY
---
-2.20.1
-
ext4-fix-deadlock-allocating-crypto-bounce-page-from.patch
btrfs-fix-assertion-failure-on-fsync-with-no_holes-e.patch
btrfs-use-bool-argument-in-free_root_pointers.patch
-btrfs-free-block-groups-after-free-ing-fs-trees.patch
btrfs-remove-trivial-locking-wrappers-of-tree-mod-lo.patch
btrfs-fix-race-between-adding-and-putting-tree-mod-s.patch
drm-atmel-hlcdc-enable-clock-before-configuring-timi.patch