]> granicus.if.org Git - zfs/commit
nopwrites on dmu_sync-ed blocks can result in a panic
authorGeorge Wilson <george.wilson@delphix.com>
Fri, 28 Jun 2019 19:40:24 +0000 (15:40 -0400)
committerTony Hutter <hutter2@llnl.gov>
Wed, 25 Sep 2019 18:27:48 +0000 (11:27 -0700)
commit7d2489cfad1b04c1b22292d0a9a58f85195ce00c
treecd7dc51188e203745ca292e88065ce6c9d9925bc
parent04d4df89f4526eecd66fa1c380dba5ee3aff261c
nopwrites on dmu_sync-ed blocks can result in a panic

After device removal, performing nopwrites on a dmu_sync-ed block
will result in a panic. This panic can show up in two ways:
1. an attempt to issue an IOCTL in vdev_indirect_io_start()
2. a failed comparison of zio->io_bp and zio->io_bp_orig in
   zio_done()
To resolve both of these panics, nopwrites of blocks on indirect
vdevs should be ignored and new allocations should be performed on
concrete vdevs.

Reviewed-by: Igor Kozhukhov <igor@dilos.org>
Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Don Brady <don.brady@delphix.com>
Signed-off-by: George Wilson <gwilson@delphix.com>
Closes #8957
module/zfs/zio.c
tests/runfiles/linux.run
tests/zfs-tests/tests/functional/removal/Makefile.am
tests/zfs-tests/tests/functional/removal/removal_nopwrite.ksh [new file with mode: 0755]