mirror_zfs/module
Paul Dagnelie 93fd9101c9 Prevent race in blkptr_verify against device removal
When we check the vdev of the blkptr in zfs_blkptr_verify, we can run
into a race condition where that vdev is temporarily unavailable. This
happens when a device removal operation and the old vdev_t has been
removed from the array, but the new indirect vdev has not yet been
inserted.

We hold the spa_config_lock while doing our sensitive verification.
To ensure that we don't deadlock, we only grab the lock if we don't
have config_writer held. In addition, I had to const the tags of the
refcounts and the spa_config_lock arguments.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #9112
2020-01-22 13:48:57 -08:00
..
avl Update build system and packaging 2018-05-29 16:00:33 -07:00
icp Minor style cleanup 2019-09-25 11:27:49 -07:00
lua Linux 5.3: Fix switch() fall though compiler errors 2019-09-25 11:27:50 -07:00
nvpair Use NV_ENCODE_NATIVE for nvlist encoding variable 2019-04-26 11:24:31 -07:00
spl Drop KMC_NOEMERGENCY 2020-01-22 13:48:57 -08:00
unicode Update build system and packaging 2018-05-29 16:00:33 -07:00
zcommon Minor style cleanup 2019-09-25 11:27:49 -07:00
zfs Prevent race in blkptr_verify against device removal 2020-01-22 13:48:57 -08:00
.gitignore Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
Makefile.in Linux 5.3 compat: Makefile subdir-m no longer supported 2019-09-25 11:27:50 -07:00