]> granicus.if.org Git - zfs/commit
OpenZFS 9591 - ms_shift can be incorrectly changed
authorSerapheim Dimitropoulos <serapheim@delphix.com>
Tue, 12 Jun 2018 22:34:20 +0000 (15:34 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 21 Jun 2018 16:35:26 +0000 (09:35 -0700)
commit7637ef8d235f34876c8600e3006e0bb9763b24d8
tree5409fba0385b200e6ed6353821f518b92f2ffd02
parentaf43029484cc368112954668dace8fa9327f72f2
OpenZFS 9591 - ms_shift can be incorrectly changed

ms_shift can be incorrectly changed changed in MOS config for
indirect vdevs that have been historically expanded

According to spa_config_update() we expect new vdevs to have
vdev_ms_array equal to 0 and then we go ahead and set their metaslab
size. The problem is that indirect vdevs also have vdev_ms_array == 0
because their metaslabs are destroyed once their removal is done.

As a result, if a vdev was expanded and then removed may have its
ms_shift changed if another vdev was added after its removal.
Fortunately this behavior does not cause any type of crash or bad
behavior in the kernel but it can confuse zdb and anyone doing any kind
of analysis of the history of the pools.

Authored by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <gwilson@zfsmail.com>
Reviewed by: John Kennedy <john.kennedy@delphix.com>
Reviewed by: Prashanth Sreenivasa <pks@delphix.com>
Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Ported-by: Tim Chase <tim@chase2k.com>
OpenZFS-commit: https://github.com/openzfs/openzfs/pull/651
OpenZFS-issue: https://illumos.org/issues/9591a
External-issue: DLPX-58879
Closes #7644
module/zfs/spa_config.c
module/zfs/vdev.c
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/removal/Makefile.am
tests/zfs-tests/tests/functional/removal/remove_expanded.ksh [new file with mode: 0755]