mirror_zfs/cmd
Brian Behlendorf 52b684236d
ztest: scrub ddt repair
The ztest_ddt_repair() test is designed inflict damage to the
ddt which can be repairable by a scrub.  Unfortunately, this
repair logic was broken at some point and it went undetected.
This issue is not specific to ztest, but thankfully this extra
redundancy is rarely enabled and even more rarely needed.

The root cause was identified to be the ddt_bp_create()
function called by dsl_scan_ddt_entry() which did not set the
dedup bit of the generated block pointer.

The consequence of this was that the ZIO_DDT_READ_PIPELINE was
never enabled for the block pointer during the scrub, and the
dedup ditto repair logic was never run.  Note that for demand
reads which don't rely on ddt_bp_create() the required pipeline
stages would be enabled and the repair performed.

This was resolved by unconditionally setting the dedup bit in
ddt_bp_create().  This way all codes paths which may need to
perform a repair from a block pointer generated from the dtt
entry will be able too.  The only exception is that the dedup
bit is cleared in ddt_phys_free() which is required to avoid
leaking space.

Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Tom Caputi <tcaputi@datto.com>
Reviewed by: Serapheim Dimitropoulos <serapheim@delphix.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #8270
2019-01-17 15:25:00 -08:00
..
arc_summary pyzfs: python3 support (build system) 2019-01-06 10:39:41 -08:00
arcstat pyzfs: python3 support (build system) 2019-01-06 10:39:41 -08:00
dbufstat pyzfs: python3 support (build system) 2019-01-06 10:39:41 -08:00
fsck_zfs Add /sbin/fsck.zfs helper 2013-01-09 16:54:58 -08:00
mount_zfs Add libzutil for libzfs or libzpool consumers 2018-11-05 11:22:33 -08:00
raidz_test Support -fsanitize=address with --enable-asan 2018-01-10 10:49:27 -08:00
vdev_id Add enclosure_symlinks option to vdev_id 2018-12-14 17:27:49 -08:00
zdb ztest: split block reconstruction 2019-01-16 14:10:02 -08:00
zed zed: detect and offline physically removed devices 2018-11-09 11:17:24 -08:00
zfs Disable 'zfs remap' command 2019-01-15 15:46:58 -08:00
zgenhostid Add zgenhostid utility script 2017-07-25 13:22:03 -04:00
zhack Add libzutil for libzfs or libzpool consumers 2018-11-05 11:22:33 -08:00
zinject Add libzutil for libzfs or libzpool consumers 2018-11-05 11:22:33 -08:00
zpool Add 'zpool status -i' option 2019-01-07 11:03:18 -08:00
zstreamdump zstreamdump dumps core printing truncated nvlist 2018-09-18 09:43:09 -07:00
ztest ztest: scrub ddt repair 2019-01-17 15:25:00 -08:00
zvol_id Fedora 28: Fix misc bounds check compiler warnings 2018-04-04 10:16:47 -07:00
Makefile.am Retire legacy test infrastructure 2017-08-15 17:26:38 -07:00