diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-12-29 17:20:42 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-12-29 17:20:42 +0100 |
commit | af0533d532ba15517a72eb74123b74b1d95b2b93 (patch) | |
tree | cdbb12e340b63015593806305acb9c0e6f419ccb | |
parent | 233f8d7e1501a21686dbbed35dcfcdbc7074cee0 (diff) | |
download | queue-3.18-af0533d532ba15517a72eb74123b74b1d95b2b93.tar.gz |
drop patch now applied
-rw-r--r-- | dm-btree-increase-rebalance-threshold-in-__rebalance2.patch | 67 | ||||
-rw-r--r-- | series | 5 |
2 files changed, 0 insertions, 72 deletions
diff --git a/dm-btree-increase-rebalance-threshold-in-__rebalance2.patch b/dm-btree-increase-rebalance-threshold-in-__rebalance2.patch deleted file mode 100644 index a95525c..0000000 --- a/dm-btree-increase-rebalance-threshold-in-__rebalance2.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 474e559567fa631dea8fb8407ab1b6090c903755 Mon Sep 17 00:00:00 2001 -From: Hou Tao <houtao1@huawei.com> -Date: Tue, 3 Dec 2019 19:42:58 +0800 -Subject: dm btree: increase rebalance threshold in __rebalance2() - -From: Hou Tao <houtao1@huawei.com> - -commit 474e559567fa631dea8fb8407ab1b6090c903755 upstream. - -We got the following warnings from thin_check during thin-pool setup: - - $ thin_check /dev/vdb - examining superblock - examining devices tree - missing devices: [1, 84] - too few entries in btree_node: 41, expected at least 42 (block 138, max_entries = 126) - examining mapping tree - -The phenomenon is the number of entries in one node of details_info tree is -less than (max_entries / 3). And it can be easily reproduced by the following -procedures: - - $ new a thin pool - $ presume the max entries of details_info tree is 126 - $ new 127 thin devices (e.g. 1~127) to make the root node being full - and then split - $ remove the first 43 (e.g. 1~43) thin devices to make the children - reblance repeatedly - $ stop the thin pool - $ thin_check - -The root cause is that the B-tree removal procedure in __rebalance2() -doesn't guarantee the invariance: the minimal number of entries in -non-root node should be >= (max_entries / 3). - -Simply fix the problem by increasing the rebalance threshold to -make sure the number of entries in each child will be greater -than or equal to (max_entries / 3 + 1), so no matter which -child is used for removal, the number will still be valid. - -Cc: stable@vger.kernel.org -Signed-off-by: Hou Tao <houtao1@huawei.com> -Acked-by: Joe Thornber <ejt@redhat.com> -Signed-off-by: Mike Snitzer <snitzer@redhat.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - ---- - drivers/md/persistent-data/dm-btree-remove.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - ---- a/drivers/md/persistent-data/dm-btree-remove.c -+++ b/drivers/md/persistent-data/dm-btree-remove.c -@@ -203,7 +203,13 @@ static void __rebalance2(struct dm_btree - struct btree_node *right = r->n; - uint32_t nr_left = le32_to_cpu(left->header.nr_entries); - uint32_t nr_right = le32_to_cpu(right->header.nr_entries); -- unsigned threshold = 2 * merge_threshold(left) + 1; -+ /* -+ * Ensure the number of entries in each child will be greater -+ * than or equal to (max_entries / 3 + 1), so no matter which -+ * child is used for removal, the number will still be not -+ * less than (max_entries / 3). -+ */ -+ unsigned int threshold = 2 * (merge_threshold(left) + 1); - - if (nr_left + nr_right < threshold) { - /* @@ -1,12 +1,8 @@ -dm-btree-increase-rebalance-threshold-in-__rebalance2.patch - -# newer stuff btrfs-do-not-leak-reloc-root-if-we-fail-to-read-the-fs-root.patch btrfs-handle-enoent-in-btrfs_uuid_tree_iterate.patch alsa-pcm-avoid-possible-info-leaks-from-pcm-stream-buffers.patch alsa-hda-ca0132-keep-power-on-during-processing-dsp-response.patch alsa-hda-ca0132-avoid-endless-loop.patch - af_packet-set-defaule-value-for-tmo.patch mod_devicetable-fix-phy-module-format.patch net-qlogic-fix-error-paths-in-ql_alloc_large_buffers.patch @@ -15,4 +11,3 @@ usbip-fix-error-path-of-vhci_recv_ret_submit.patch usb-ehci-do-not-return-epipe-when-hub-is-disconnected.patch ext4-check-for-directory-entries-too-close-to-block-end.patch powerpc-irq-fix-stack-overflow-verification.patch - |