HomeFreeBSD

Use a dedicated taskq for vdev_file

Description

Use a dedicated taskq for vdev_file

Originally, vdev_file used system_taskq. This would cause a deadlock,
especially on system with few CPUs. The reason is that the prefetcher
threads, which are on system_taskq, will sometimes be blocked waiting
for I/O to finish. If the prefetcher threads consume all the tasks in
system_taskq, the I/O cannot be served and thus results in a deadlock.

We fix this by creating a dedicated vdev_file_taskq for vdev_file I/O.

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

Details

Provenance
Chunwei Chen <tuxoko@gmail.com>Authored on May 13 2014, 2:36 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on May 14 2014, 11:20 PM
Parents
rG2c33b9127569: Handle vdev_lookup_top() failure in dva_get_dsize_sync()
Branches
Unknown
Tags
Unknown