Replace taskq_wait() with taskq_wait_oustanding(). This way callers
will only block until previously submitted tasks have been completed.
This was the previous behavior of task_wait() prior to the introduction
of taskq_wait_outstanding() so this isn't really a functionalty change
for these callers.
Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
return;
}
- taskq_wait(mg->mg_taskq);
+ taskq_wait_outstanding(mg->mg_taskq, 0);
metaslab_group_alloc_update(mg);
mgprev = mg->mg_prev;
int m = 0;
if (spa_shutting_down(spa) || !metaslab_preload_enabled) {
- taskq_wait(mg->mg_taskq);
+ taskq_wait_outstanding(mg->mg_taskq, 0);
return;
}
tx_state_t *tx = &dp->dp_tx;
if (tx->tx_commit_cb_taskq != NULL)
- taskq_wait(tx->tx_commit_cb_taskq);
+ taskq_wait_outstanding(tx->tx_commit_cb_taskq, 0);
}
static void
*/
int round = 0;
while (zsb->z_nr_znodes > 0) {
- taskq_wait(dsl_pool_iput_taskq(dmu_objset_pool(
- zsb->z_os)));
+ taskq_wait_outstanding(dsl_pool_iput_taskq(
+ dmu_objset_pool(zsb->z_os)), 0);
if (++round > 1 && !unmounting)
break;
}
void
zfs_fini(void)
{
- taskq_wait(system_taskq);
+ taskq_wait_outstanding(system_taskq, 0);
unregister_filesystem(&zpl_fs_type);
zfs_znode_fini();
zfsctl_fini();