diff options
Diffstat (limited to 'tests/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh')
-rw-r--r-- | tests/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh b/tests/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh new file mode 100644 index 000000000000..08fdd558f929 --- /dev/null +++ b/tests/zfs-tests/tests/functional/redundancy/redundancy_draid_spare2.ksh @@ -0,0 +1,80 @@ +#!/bin/ksh -p + +# +# CDDL HEADER START +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# +# CDDL HEADER END +# + +# +# Copyright (c) 2020 by Lawrence Livermore National Security, LLC. +# + +. $STF_SUITE/include/libtest.shlib +. $STF_SUITE/tests/functional/redundancy/redundancy.kshlib + +# +# DESCRIPTION: +# Verify multiple dRAID spares can be used. +# +# STRATEGY: +# 1. Create a pool and fill it with data. +# 2. Engage 3 distributed spares and verify the pool +# 3. Refill the filesystem with new data +# 4. Clear the pool to online previous faulted devices and resilver +# 5. Verify the pool and its contents +# + +log_assert "Verify multiple dRAID spares" + +log_onexit cleanup + +parity=1 +spares=3 +data=$(random_int_between 1 4) +children=10 +draid="draid${parity}:${data}d:${children}c:${spares}s" + +setup_test_env $TESTPOOL $draid $children + +# Replace vdev7 -> draid1-0-0 +log_must zpool offline -f $TESTPOOL $BASEDIR/vdev7 +log_must zpool replace -w $TESTPOOL $BASEDIR/vdev7 draid1-0-0 + +# Replace vdev8 -> draid1-0-1 +log_must zpool offline -f $TESTPOOL $BASEDIR/vdev8 +log_must zpool replace -w $TESTPOOL $BASEDIR/vdev8 draid1-0-1 + +# Replace vdev9 -> draid1-0-2 +log_must zpool offline -f $TESTPOOL $BASEDIR/vdev9 +log_must zpool replace -w $TESTPOOL $BASEDIR/vdev9 draid1-0-2 + +# Verify, refill and verify the pool contents. +verify_pool $TESTPOOL +refill_test_env $TESTPOOL +verify_pool $TESTPOOL + +# Bring everything back online and check for errors. +log_must zpool clear $TESTPOOL +log_must zpool wait -t resilver $TESTPOOL + +log_must wait_hotspare_state $TESTPOOL draid1-0-0 "AVAIL" +log_must wait_hotspare_state $TESTPOOL draid1-0-1 "AVAIL" +log_must wait_hotspare_state $TESTPOOL draid1-0-2 "AVAIL" + +log_must zpool scrub -w $TESTPOOL +log_must check_pool_status $TESTPOOL "scan" "repaired 0B" +log_must check_pool_status $TESTPOOL "scan" "with 0 errors" + +log_must is_data_valid $TESTPOOL + +log_pass "Verify multiple dRAID spares" |