aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTony Hutter <[email protected]>2018-10-09 20:30:32 -0700
committerBrian Behlendorf <[email protected]>2018-10-09 20:30:32 -0700
commit2ef0f8c3298ef02a68180fa3b16d84aa810a464a (patch)
treee2f40589b12f33c5a94ae737cdd1bc2dee32af5e /tests
parent0391690583a8c5129477cbdac476130abe4af776 (diff)
Print "(repairing)" in zpool status again
Historically, zpool status prints "(repairing)" for any drives that have errors during a scrub: NAME STATE READ WRITE CKSUM mypool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 /tmp/file1 ONLINE 13 0 0 (repairing) /tmp/file2 ONLINE 0 0 0 /tmp/file3 ONLINE 0 0 0 This was accidentally broken in "OpenZFS 9166 - zfs storage pool checkpoint" (d2734cc). This patch adds it back in. Reviewed-by: Serapheim Dimitropoulos <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Tony Hutter <[email protected]> Closes #7779 Closes #7978
Diffstat (limited to 'tests')
-rw-r--r--tests/runfiles/linux.run3
-rw-r--r--tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am3
-rwxr-xr-xtests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh74
3 files changed, 78 insertions, 2 deletions
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run
index 92964139b..776aff4d4 100644
--- a/tests/runfiles/linux.run
+++ b/tests/runfiles/linux.run
@@ -423,7 +423,8 @@ tags = ['functional', 'cli_root', 'zpool_replace']
[tests/functional/cli_root/zpool_scrub]
tests = ['zpool_scrub_001_neg', 'zpool_scrub_002_pos', 'zpool_scrub_003_pos',
'zpool_scrub_004_pos', 'zpool_scrub_005_pos',
- 'zpool_scrub_encrypted_unloaded', 'zpool_scrub_offline_device']
+ 'zpool_scrub_encrypted_unloaded', 'zpool_scrub_print_repairing',
+ 'zpool_scrub_offline_device']
tags = ['functional', 'cli_root', 'zpool_scrub']
[tests/functional/cli_root/zpool_set]
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am b/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am
index 3f4dd1207..69f4b5d3b 100644
--- a/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am
+++ b/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am
@@ -8,7 +8,8 @@ dist_pkgdata_SCRIPTS = \
zpool_scrub_004_pos.ksh \
zpool_scrub_005_pos.ksh \
zpool_scrub_encrypted_unloaded.ksh \
- zpool_scrub_offline_device.ksh
+ zpool_scrub_offline_device.ksh \
+ zpool_scrub_print_repairing.ksh
dist_pkgdata_DATA = \
zpool_scrub.cfg
diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh
new file mode 100755
index 000000000..e4cb2b51e
--- /dev/null
+++ b/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh
@@ -0,0 +1,74 @@
+#!/bin/ksh -p
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2018 Lawrence Livermore National Security, LLC.
+
+. $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg
+
+#
+# DESCRIPTION:
+# zpool status should print "(repairing)" on drives with errors found
+# while scrubbing.
+#
+# STRATEGY:
+# 1. Create a file (already done in setup.ksh)
+# 2. Inject read errors on one vdev
+# 3. Run a scrub
+# 4. Verify we see "(repairing)" on the bad vdev
+#
+
+verify_runnable "global"
+
+log_assert "Verify we see '(repairing)' while scrubbing a bad vdev."
+
+function cleanup
+{
+ log_must zinject -c all
+ log_must set_tunable64 zfs_scan_vdev_limit $ZFS_SCAN_VDEV_LIMIT_DEFAULT
+ zpool scrub -s $TESTPOOL || true
+}
+
+log_onexit cleanup
+
+# A file is already created in setup.ksh. Inject read errors on the first disk.
+log_must zinject -d $DISK1 -e io -T read -f 100 $TESTPOOL
+
+# Make the scrub slow
+log_must zinject -d $DISK1 -D10:1 $TESTPOOL
+log_must set_tunable64 zfs_scan_vdev_limit $ZFS_SCAN_VDEV_LIMIT_SLOW
+
+log_must zpool scrub $TESTPOOL
+
+# Wait for the scrub to show '(repairing)'. Timeout after 10 sec if it doesn't
+# show it.
+for i in {0..100} ; do
+ if ! is_pool_scrubbing $TESTPOOL ; then
+ break
+ fi
+
+ if zpool status | grep "$DISK1" | grep -q '(repairing)' ; then
+ log_pass "Correctly saw '(repairing)' while scrubbing"
+ fi
+
+ sleep 0.1
+done
+log_fail "Never saw '(repairing)' while scrubbing"