Hou Tao 474e559567 dm btree: increase rebalance threshold in __rebalance2()
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>
2019-12-05 15:27:52 -05:00
..
2019-11-01 09:30:48 -07:00
2019-10-23 06:26:33 -04:00
2019-09-19 14:14:28 -07:00
2019-09-18 11:14:31 -07:00
2019-09-22 12:02:21 -07:00
2019-10-25 14:25:15 +02:00
2019-09-23 17:20:40 -04:00
2019-09-29 10:33:41 -07:00
2019-10-15 23:51:36 +02:00
2019-09-23 19:16:01 -07:00
2019-10-23 15:31:17 -04:00
2019-09-22 10:55:08 -07:00
2019-09-30 10:04:28 -07:00
2019-09-22 11:05:43 -07:00
2019-10-22 17:55:51 +02:00
2019-11-02 11:15:52 -07:00
2019-09-22 10:52:23 -07:00
2019-09-17 18:40:42 -07:00
2019-11-02 11:15:52 -07:00
2019-09-18 11:14:31 -07:00
2019-10-15 14:07:01 -06:00
2019-09-27 11:17:38 -07:00
2019-09-18 11:05:34 -07:00