]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop broken btrfs patches, again.
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 May 2018 08:48:48 +0000 (10:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 May 2018 08:48:48 +0000 (10:48 +0200)
queue-4.4/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch [deleted file]
queue-4.4/series
queue-4.9/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch [deleted file]
queue-4.9/series

diff --git a/queue-4.4/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch b/queue-4.4/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch
deleted file mode 100644 (file)
index bc377fe..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-From 02a3307aa9c20b4f6626255b028f07f6cfa16feb Mon Sep 17 00:00:00 2001
-From: Liu Bo <bo.liu@linux.alibaba.com>
-Date: Wed, 16 May 2018 01:37:36 +0800
-Subject: btrfs: fix reading stale metadata blocks after degraded raid1 mounts
-
-From: Liu Bo <bo.liu@linux.alibaba.com>
-
-commit 02a3307aa9c20b4f6626255b028f07f6cfa16feb upstream.
-
-If a btree block, aka. extent buffer, is not available in the extent
-buffer cache, it'll be read out from the disk instead, i.e.
-
-btrfs_search_slot()
-  read_block_for_search()  # hold parent and its lock, go to read child
-    btrfs_release_path()
-    read_tree_block()  # read child
-
-Unfortunately, the parent lock got released before reading child, so
-commit 5bdd3536cbbe ("Btrfs: Fix block generation verification race") had
-used 0 as parent transid to read the child block.  It forces
-read_tree_block() not to check if parent transid is different with the
-generation id of the child that it reads out from disk.
-
-A simple PoC is included in btrfs/124,
-
-0. A two-disk raid1 btrfs,
-
-1. Right after mkfs.btrfs, block A is allocated to be device tree's root.
-
-2. Mount this filesystem and put it in use, after a while, device tree's
-   root got COW but block A hasn't been allocated/overwritten yet.
-
-3. Umount it and reload the btrfs module to remove both disks from the
-   global @fs_devices list.
-
-4. mount -odegraded dev1 and write some data, so now block A is allocated
-   to be a leaf in checksum tree.  Note that only dev1 has the latest
-   metadata of this filesystem.
-
-5. Umount it and mount it again normally (with both disks), since raid1
-   can pick up one disk by the writer task's pid, if btrfs_search_slot()
-   needs to read block A, dev2 which does NOT have the latest metadata
-   might be read for block A, then we got a stale block A.
-
-6. As parent transid is not checked, block A is marked as uptodate and
-   put into the extent buffer cache, so the future search won't bother
-   to read disk again, which means it'll make changes on this stale
-   one and make it dirty and flush it onto disk.
-
-To avoid the problem, parent transid needs to be passed to
-read_tree_block().
-
-In order to get a valid parent transid, we need to hold the parent's
-lock until finishing reading child.
-
-This patch needs to be slightly adapted for stable kernels, the
-&first_key parameter added to read_tree_block() is from 4.16+
-(581c1760415c4). The fix is to replace 0 by 'gen'.
-
-Fixes: 5bdd3536cbbe ("Btrfs: Fix block generation verification race")
-CC: stable@vger.kernel.org # 4.4+
-Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
-Reviewed-by: Filipe Manana <fdmanana@suse.com>
-Reviewed-by: Qu Wenruo <wqu@suse.com>
-[ update changelog ]
-Signed-off-by: David Sterba <dsterba@suse.com>
-Signed-off-by: Nikolay Borisov <nborisov@suse.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/btrfs/ctree.c |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/fs/btrfs/ctree.c
-+++ b/fs/btrfs/ctree.c
-@@ -2497,10 +2497,8 @@ read_block_for_search(struct btrfs_trans
-       if (p->reada)
-               reada_for_search(root, p, level, slot, key->objectid);
--      btrfs_release_path(p);
--
-       ret = -EAGAIN;
--      tmp = read_tree_block(root, blocknr, 0);
-+      tmp = read_tree_block(fs_info, blocknr, gen);
-       if (!IS_ERR(tmp)) {
-               /*
-                * If the read above didn't mark this buffer up to date,
-@@ -2512,6 +2510,8 @@ read_block_for_search(struct btrfs_trans
-                       ret = -EIO;
-               free_extent_buffer(tmp);
-       }
-+
-+      btrfs_release_path(p);
-       return ret;
- }
index c9f4fb46cf7e5599c4a54b9c71d3019ce98ba8fc..01196a328070815147539004d7d5afd91a0f89b6 100644 (file)
@@ -67,4 +67,3 @@ arm-8770-1-kprobes-prohibit-probing-on-optimized_callback.patch
 arm-8772-1-kprobes-prohibit-kprobes-on-get_user-functions.patch
 btrfs-fix-xattr-loss-after-power-failure.patch
 btrfs-fix-crash-when-trying-to-resume-balance-without-the-resume-flag.patch
-btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch
diff --git a/queue-4.9/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch b/queue-4.9/btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch
deleted file mode 100644 (file)
index 7b2523e..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-From 02a3307aa9c20b4f6626255b028f07f6cfa16feb Mon Sep 17 00:00:00 2001
-From: Liu Bo <bo.liu@linux.alibaba.com>
-Date: Wed, 16 May 2018 01:37:36 +0800
-Subject: btrfs: fix reading stale metadata blocks after degraded raid1 mounts
-
-From: Liu Bo <bo.liu@linux.alibaba.com>
-
-commit 02a3307aa9c20b4f6626255b028f07f6cfa16feb upstream.
-
-If a btree block, aka. extent buffer, is not available in the extent
-buffer cache, it'll be read out from the disk instead, i.e.
-
-btrfs_search_slot()
-  read_block_for_search()  # hold parent and its lock, go to read child
-    btrfs_release_path()
-    read_tree_block()  # read child
-
-Unfortunately, the parent lock got released before reading child, so
-commit 5bdd3536cbbe ("Btrfs: Fix block generation verification race") had
-used 0 as parent transid to read the child block.  It forces
-read_tree_block() not to check if parent transid is different with the
-generation id of the child that it reads out from disk.
-
-A simple PoC is included in btrfs/124,
-
-0. A two-disk raid1 btrfs,
-
-1. Right after mkfs.btrfs, block A is allocated to be device tree's root.
-
-2. Mount this filesystem and put it in use, after a while, device tree's
-   root got COW but block A hasn't been allocated/overwritten yet.
-
-3. Umount it and reload the btrfs module to remove both disks from the
-   global @fs_devices list.
-
-4. mount -odegraded dev1 and write some data, so now block A is allocated
-   to be a leaf in checksum tree.  Note that only dev1 has the latest
-   metadata of this filesystem.
-
-5. Umount it and mount it again normally (with both disks), since raid1
-   can pick up one disk by the writer task's pid, if btrfs_search_slot()
-   needs to read block A, dev2 which does NOT have the latest metadata
-   might be read for block A, then we got a stale block A.
-
-6. As parent transid is not checked, block A is marked as uptodate and
-   put into the extent buffer cache, so the future search won't bother
-   to read disk again, which means it'll make changes on this stale
-   one and make it dirty and flush it onto disk.
-
-To avoid the problem, parent transid needs to be passed to
-read_tree_block().
-
-In order to get a valid parent transid, we need to hold the parent's
-lock until finishing reading child.
-
-This patch needs to be slightly adapted for stable kernels, the
-&first_key parameter added to read_tree_block() is from 4.16+
-(581c1760415c4). The fix is to replace 0 by 'gen'.
-
-Fixes: 5bdd3536cbbe ("Btrfs: Fix block generation verification race")
-CC: stable@vger.kernel.org # 4.4+
-Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
-Reviewed-by: Filipe Manana <fdmanana@suse.com>
-Reviewed-by: Qu Wenruo <wqu@suse.com>
-[ update changelog ]
-Signed-off-by: David Sterba <dsterba@suse.com>
-Signed-off-by: Nikolay Borisov <nborisov@suse.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- fs/btrfs/ctree.c |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/fs/btrfs/ctree.c
-+++ b/fs/btrfs/ctree.c
-@@ -2486,10 +2486,8 @@ read_block_for_search(struct btrfs_trans
-       if (p->reada != READA_NONE)
-               reada_for_search(root, p, level, slot, key->objectid);
--      btrfs_release_path(p);
--
-       ret = -EAGAIN;
--      tmp = read_tree_block(root, blocknr, 0);
-+      tmp = read_tree_block(fs_info, blocknr, gen);
-       if (!IS_ERR(tmp)) {
-               /*
-                * If the read above didn't mark this buffer up to date,
-@@ -2503,6 +2501,8 @@ read_block_for_search(struct btrfs_trans
-       } else {
-               ret = PTR_ERR(tmp);
-       }
-+
-+      btrfs_release_path(p);
-       return ret;
- }
index e43f967493596436b6826bcbaa3830693eeb2ae8..91611121493960f80c93cdbbd683608640db5ecd 100644 (file)
@@ -32,4 +32,3 @@ arm-8772-1-kprobes-prohibit-kprobes-on-get_user-functions.patch
 btrfs-fix-xattr-loss-after-power-failure.patch
 btrfs-fix-crash-when-trying-to-resume-balance-without-the-resume-flag.patch
 x86-amd-don-t-set-x86_bug_sysret_ss_attrs-when-running.patch
-btrfs-fix-reading-stale-metadata-blocks-after-degraded-raid1-mounts.patch