HomeFreeBSD

Fix 'zpool add' safety check corner cases

Description

Fix 'zpool add' safety check corner cases

Three cases were discovered where 'zpool add' would fail to
warn when adding vdevs to a pool with a mismatched replication
level. These are:

  1. When a pool contains mixed file and disk vdevs.
  2. When a pool contains an active dRAID distributed spare
  3. When a pool contains an active hot spare

The lack of warnings are caused by get_replication() assessing
the current pool configuration an inconsistent and disabling
the mismatched replication check for the new pool configuration
after 'zpool add'. This change updates get_replication() to
be slightly more tolerant in the non-fatal case.

The zpool_add_010_pos.ksh test case was split in to separate
tests: zpool_add_warn_create.ksh, pool_add_warn_degraded.ksh,
and zpool_add_warn_removal. These test were extended to
include coverage for dRAID pools and the three scenarios
described above.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #17780

Details

Provenance
Brian Behlendorf <behlendorf1@llnl.gov>Authored on Thu, Sep 25, 4:32 PM
Parents
rG9bd8f4379c23: ZTS: update upgrade_readonly_pool.ksh
Branches
Unknown
Tags
Unknown