mirror_zfs/tests/zfs-tests/tests/functional
Brian Behlendorf 93c8e91fe7
Fix dRAID self-healing short columns
When dRAID performs a normal read operation only the data columns
in the raid map are read from disk.  This is enough information to
calculate the checksum, verify it, and return the needed data to the
application.  It's only in the event of a checksum failure that the
additional parity and any empty columns must be read since they are
required for parity reconstruction.

Reading these additional columns is handled by vdev_raidz_read_all()
which calls vdev_draid_map_alloc_empty() to expand the raid_map_t
and submit IOs for the missing columns.  This all works correctly,
but it fails to account for any "short" columns.  These are data
columns which are padded with a empty skip sector at the end.
Since that empty sector is not needed for a normal read it's not
read when columns is first read from disk.  However, like the parity
and empty columns the skip sector is needed to perform reconstruction.

The fix is to mark any "short" columns as never being read by clearing
the rc_tried flag when expanding the raid_map_t.  This will cause
the entire column to re-read from disk in the event of a checksum
failure allowing the self-healing functionality to repair the block.

Note that this only effects the self-healing feature because when
scrubbing a pool the parity, data, and empty columns are all read
initially to verify their contents.  Furthermore, only blocks which
contain "short" columns would be effected, and only when the memory
backing the skip sector wasn't already zeroed out.

This change extends the existing redundancy_raidz.ksh test case to
verify self-healing (as well as resilver and scrub).  Then applies
the same test case to dRAID with a slightly modified version of
the test script called redundancy_draid.ksh.  The unused variable
combrec was also removed from both test cases.

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Mark Maybee <mark.maybee@delphix.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #12010
2021-05-08 08:57:25 -07:00
..
acl Fix regression in POSIX mode behavior 2021-03-19 22:50:46 -07:00
alloc_class special device removal space accounting fixes 2020-12-17 12:11:56 -08:00
arc Make dbufstat work on FreeBSD 2020-10-08 09:40:23 -07:00
atime Replace ZoL with OpenZFS where applicable 2021-05-07 17:20:37 -07:00
bootfs Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
btree ZTS: Fix ksh path in btree tests 2020-01-15 16:23:29 -08:00
cache ZTS: Fix and change testcase cache_010_neg 2020-04-13 10:50:41 -07:00
cachefile Fix typos in tests/ 2019-09-02 18:14:53 -07:00
casenorm ZTS: Adapt casenorm tests for FreeBSD 2020-02-26 08:41:30 -08:00
channel_program Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
chattr Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
checksum ZTS: Add L1 corruption test 2020-11-05 17:16:25 -08:00
clean_mirror ZTS: clean_mirror and scrub_mirror cleanup 2018-07-09 12:46:14 -07:00
cli_root Replace ZoL with OpenZFS where applicable 2021-05-07 17:20:37 -07:00
cli_user Fix various typos 2021-04-02 18:52:15 -07:00
compression Add zstd support to zfs 2020-08-20 10:30:06 -07:00
cp_files Fix ENOSPC in "Handle zap_add() failures in ..." 2018-04-18 14:19:50 -07:00
ctime Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
deadman Ratelimit deadman zevents as with delay zevents 2021-04-07 16:23:57 -07:00
delegate Clarify comments in config/*.m4, vdev_geom.c, zfs_allow_*.ksh 2020-06-22 09:46:37 -07:00
devices ZTS: devices_001_pos and devices_002_neg 2019-12-27 12:11:27 -08:00
events ZTS: add zed_fd_spill to verify the fds ZEDLETs inherit 2021-04-15 13:46:05 -07:00
exec Enable remaining tests 2017-05-22 12:34:32 -04:00
fallocate linux: add basic fallocate(mode=0/2) compatibility 2020-06-18 11:22:11 -07:00
fault Fix various typos 2021-04-02 18:52:15 -07:00
features ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
grow ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
history Cross-platform acltype 2020-10-13 21:25:48 -07:00
hkdf Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
inheritance Fixes for make dist 2020-06-26 14:20:02 -07:00
inuse ZTS: Eliminate partitioning from zpool_create etc 2020-02-20 08:10:13 -08:00
io Add basic io_uring test 2021-01-23 15:42:42 -08:00
l2arc Non-l2arc pool reads shouldn't be l2arc misses 2020-10-20 11:39:52 -07:00
large_files ZTS: Another round of changes for FreeBSD 2020-03-06 09:31:32 -08:00
largest_pool Fix typos 2020-06-09 21:24:09 -07:00
libzfs Use abs_top_builddir when referencing libraries 2020-07-10 14:26:32 -07:00
limits Linux 4.10 compat: has_capability() 2020-07-19 09:56:21 -07:00
link_count ZTS: Add zts-report exceptions for FreeBSD 2020-03-04 15:09:40 -08:00
log_spacemap ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
migration ZTS: Fix a few defaults 2020-01-31 08:51:23 -08:00
mmap Fix typos 2020-06-09 21:24:09 -07:00
mmp ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
mount ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
mv_files ZTS: Provide an alternative to shuf for FreeBSD 2020-01-09 09:31:17 -08:00
nestedfs OpenZFS 7290 - ZFS test suite needs to control what utilities it can run 2017-04-06 09:25:36 -07:00
no_space ZTS: Eliminate partitioning from zpool_create etc 2020-02-20 08:10:13 -08:00
nopwrite ZTS: Fix path to /dev/null in nopwrite_recsize 2020-10-08 16:39:23 -07:00
online_offline Add subcommand to wait for background zfs activity to complete 2019-09-13 18:09:06 -07:00
pam pam: implement a zfs_key pam module 2020-06-24 18:45:44 -07:00
pool_checkpoint ZTS: pool_checkpoint improvements 2021-04-03 08:33:22 -07:00
pool_names Allow pool names that look like Solaris disk names 2021-04-01 08:49:41 -07:00
poolversion Fix some ZFS Test Suite issues 2017-09-25 10:32:34 -07:00
privilege ZTS: Move privilege tests to sunos.run 2020-02-21 08:52:44 -08:00
procfs ZTS: pool_state test check for pool existence in cleanup 2021-01-27 17:33:30 -08:00
projectquota Fix typos in tests/ 2019-09-02 18:08:56 -07:00
pyzfs Centralize variable substitution 2020-07-14 17:33:44 -07:00
quota ZTS: Wait for free space between quota tests 2020-03-26 10:48:19 -07:00
raidz Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
redacted_send ZTS: New test for kernel panic induced by redacted send 2021-03-19 22:47:50 -07:00
redundancy Fix dRAID self-healing short columns 2021-05-08 08:57:25 -07:00
refquota ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
refreserv ZTS: refreserv_005_pos.ksh 2020-05-08 13:50:02 -07:00
removal ZTS: fix removal_condense_export test case 2021-04-11 21:49:13 -07:00
rename_dirs Enable remaining tests 2017-05-22 12:34:32 -04:00
replacement Fix various typos 2021-04-02 18:52:15 -07:00
reservation Fix various typos 2021-04-02 18:52:15 -07:00
rootpool Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
rsend Replace ZoL with OpenZFS where applicable 2021-05-07 17:20:37 -07:00
scrub_mirror ZTS: clean_mirror and scrub_mirror cleanup 2018-07-09 12:46:14 -07:00
slog ZTS: Fix faulty slog_replay_fs_001 test 2020-02-20 08:11:51 -08:00
snapshot ZTS: Catalog tunable names for tests in tunables.cfg 2020-01-14 14:57:28 -08:00
snapused Fix "file is executable, but no shebang" warnings 2018-04-06 16:34:21 -07:00
sparse ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
suid Implement secpolicy_vnode_setid_retain() 2019-07-26 13:52:30 -07:00
threadsappend ZTS: Adopt OpenZFS test analysis script 2018-06-20 14:03:13 -07:00
tmpfile Mark functions as static 2020-06-18 12:20:38 -07:00
trim Distributed Spare (dRAID) Feature 2020-11-13 13:51:51 -08:00
truncate Update ZTS to work on FreeBSD 2019-12-18 12:29:43 -08:00
upgrade ZTS: Fix upgrade_readonly_pool 2019-10-03 09:39:13 -07:00
user_namespace Fix "file is executable, but no shebang" warnings 2018-04-06 16:34:21 -07:00
userquota ZTS: add userspace_send_encrypted.ksh to Makefile 2021-01-28 13:39:38 -08:00
vdev_zaps ZTS: Fix vdev_zaps_005_pos on CentOS 6 2019-08-22 08:53:44 -07:00
write_dirs Fix typos 2020-06-09 21:24:09 -07:00
xattr ZTS: Fix xattr_002_neg passing too soon 2021-04-30 07:37:02 -07:00
zpool_influxdb Add zpool_influxdb command 2020-10-09 09:29:21 -07:00
zvol ZTS: Use swapctl to list swap devices on FreeBSD 2021-01-24 15:56:59 -08:00
Makefile.am Add zpool_influxdb command 2020-10-09 09:29:21 -07:00