Parallelize vdev_validate

The runtime of vdev_validate is dominated by the disk accesses in
vdev_label_read_config.  Speed it up by validating all vdevs in
parallel using a taskq.

Sponsored by: Axcient
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alan Somers <asomers@gmail.com>
Closes #11470
This commit is contained in:
Alan Somers
2021-01-12 15:25:52 -07:00
committed by Brian Behlendorf
parent 67874d5487
commit cf0977ad72
3 changed files with 41 additions and 3 deletions
+2 -1
View File
@@ -763,7 +763,8 @@ vdev_label_read_config(vdev_t *vd, uint64_t txg)
int flags = ZIO_FLAG_CONFIG_WRITER | ZIO_FLAG_CANFAIL |
ZIO_FLAG_SPECULATIVE;
ASSERT(spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL);
ASSERT(vd->vdev_validate_thread == curthread ||
spa_config_held(spa, SCL_STATE_ALL, RW_WRITER) == SCL_STATE_ALL);
if (!vdev_readable(vd))
return (NULL);