diff options
author | Serapheim Dimitropoulos <[email protected]> | 2018-06-12 15:34:20 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2018-06-21 09:35:26 -0700 |
commit | 7637ef8d235f34876c8600e3006e0bb9763b24d8 (patch) | |
tree | 5409fba0385b200e6ed6353821f518b92f2ffd02 /tests/runfiles | |
parent | af43029484cc368112954668dace8fa9327f72f2 (diff) |
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 <[email protected]>
Reviewed by: Matthew Ahrens <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: John Kennedy <[email protected]>
Reviewed by: Prashanth Sreenivasa <[email protected]>
Reviewed by: Brian Behlendorf <[email protected]>
Signed-off-by: Tim Chase <[email protected]>
Ported-by: Tim Chase <[email protected]>
OpenZFS-commit: https://github.com/openzfs/openzfs/pull/651
OpenZFS-issue: https://illumos.org/issues/9591a
External-issue: DLPX-58879
Closes #7644
Diffstat (limited to 'tests/runfiles')
-rw-r--r-- | tests/runfiles/linux.run | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index af646f777..3d3ef0afa 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -683,15 +683,16 @@ tags = ['functional', 'refreserv'] [tests/functional/removal] pre = -tests = ['removal_sanity', 'removal_all_vdev', 'removal_check_space', - 'removal_condense_export', - 'removal_multiple_indirection', 'removal_remap', - 'removal_remap_deadlists', - 'removal_with_add', 'removal_with_create_fs', 'removal_with_dedup', - 'removal_with_export', 'removal_with_ganging', 'removal_with_remap', - 'removal_with_remove', 'removal_with_scrub', 'removal_with_send', - 'removal_with_send_recv', 'removal_with_snapshot', 'removal_with_write', - 'removal_with_zdb', 'removal_resume_export', +tests = ['removal_all_vdev', 'removal_check_space', + 'removal_condense_export', 'removal_multiple_indirection', + 'removal_remap', 'removal_remap_deadlists', + 'removal_resume_export', 'removal_sanity', 'removal_with_add', + 'removal_with_create_fs', 'removal_with_dedup', + 'removal_with_export', 'removal_with_ganging', + 'removal_with_remap', 'removal_with_remove', + 'removal_with_scrub', 'removal_with_send', + 'removal_with_send_recv', 'removal_with_snapshot', + 'removal_with_write', 'removal_with_zdb', 'remove_expanded', 'remove_mirror', 'remove_mirror_sanity', 'remove_raidz'] tags = ['functional', 'removal'] |