]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
btrfs fixups
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Feb 2020 22:59:27 +0000 (14:59 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Feb 2020 22:59:27 +0000 (14:59 -0800)
queue-4.14/btrfs-flush-write-bio-if-we-loop-in-extent_write_cac.patch
queue-4.4/btrfs-flush-write-bio-if-we-loop-in-extent_write_cac.patch
queue-4.9/btrfs-flush-write-bio-if-we-loop-in-extent_write_cac.patch
queue-4.9/btrfs-free-block-groups-after-free-ing-fs-trees.patch [deleted file]
queue-4.9/series

index 89808b7f9cdc9039cd50aeac2fabbd54fb677a1c..c82f361cf160c49b2eab0f9d4707c27ae7ceff8d 100644 (file)
@@ -5,7 +5,7 @@ Subject: btrfs: flush write bio if we loop in extent_write_cache_pages
 
 From: Josef Bacik <josef@toxicpanda.com>
 
-[ Upstream commit 96bf313ecb33567af4cb53928b0c951254a02759 ]
+[ Upstream commit 42ffb0bf584ae5b6b38f72259af1e0ee417ac77f ]
 
 There exists a deadlock with range_cyclic that has existed forever.  If
 we loop around with a bio already built we could deadlock with a writer
index 0e5ca91751748a6c4191d90b112d7138fd53f76b..5bed3691b09cbb3c37008c9f47ed129a24874307 100644 (file)
@@ -5,7 +5,7 @@ Subject: btrfs: flush write bio if we loop in extent_write_cache_pages
 
 From: Josef Bacik <josef@toxicpanda.com>
 
-[ Upstream commit 96bf313ecb33567af4cb53928b0c951254a02759 ]
+[ Upstream commit 42ffb0bf584ae5b6b38f72259af1e0ee417ac77f ]
 
 There exists a deadlock with range_cyclic that has existed forever.  If
 we loop around with a bio already built we could deadlock with a writer
index 5628eedc356a74beb2ad4385e73dbc5c13e78616..a562341195a080788f42151c6c0411fff8bd76cb 100644 (file)
@@ -5,7 +5,7 @@ Subject: btrfs: flush write bio if we loop in extent_write_cache_pages
 
 From: Josef Bacik <josef@toxicpanda.com>
 
-[ Upstream commit 96bf313ecb33567af4cb53928b0c951254a02759 ]
+[ Upstream commit 42ffb0bf584ae5b6b38f72259af1e0ee417ac77f]
 
 There exists a deadlock with range_cyclic that has existed forever.  If
 we loop around with a bio already built we could deadlock with a writer
diff --git a/queue-4.9/btrfs-free-block-groups-after-free-ing-fs-trees.patch b/queue-4.9/btrfs-free-block-groups-after-free-ing-fs-trees.patch
deleted file mode 100644 (file)
index 3c86444..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-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
-
index 58564265b1afd986310681b00f68e3e98180a055..a709ba00b4d6b1dd39b65375bfef624ebd68702b 100644 (file)
@@ -80,7 +80,6 @@ nfs-directory-page-cache-pages-need-to-be-locked-whe.patch
 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