HomeFreeBSD

Use a dedicated taskq for vdev_file

Description

Use a dedicated taskq for vdev_file

The introduction of parallel zvol prefetch causes deadlock when using
vdev_file.

spa_async->(spa_namespace_lock)->txg_wait_synced->(wait for txg_sync)
txg_sync->zio_wait->(wait for vdev_file_io_fsync on system_taskq)
zvol_prefetch_minors_impl (on system_taskq)->spa_open_common->(wait for spa_namespace_lock)

We fix this by using dedicated taskq for vdev_file. This same change
was originally made in commit bc25c93 but reverted in commit aa9af22
when dynamic taskqs were added.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Chunwei Chen <tuxoko@gmail.com>
Closes #5506
Closes #5495

Details

Provenance
Chunwei Chen <tuxoko@gmail.com>Authored on Dec 21 2016, 6:47 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Dec 21 2016, 6:47 PM
Parents
rG5f1346c29997: Fix dsl_props_set_sync_impl to work with nested nvlist
Branches
Unknown
Tags
Unknown

Event Timeline

Brian Behlendorf <behlendorf1@llnl.gov> committed rGda8f51e16aa4: Use a dedicated taskq for vdev_file (authored by Chunwei Chen <tuxoko@gmail.com>).Dec 21 2016, 6:47 PM