From c5528b9ba622421a213e128704de4090fa0db773 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Fri, 5 Jun 2015 11:26:35 -0700 Subject: [PATCH] Use taskq_wait_outstanding() function 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 Signed-off-by: Brian Behlendorf --- module/zfs/metaslab.c | 4 ++-- module/zfs/txg.c | 2 +- module/zfs/zfs_vfsops.c | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/zfs/metaslab.c b/module/zfs/metaslab.c index 164b6b87edd4..7ff1a4f5af7e 100644 --- a/module/zfs/metaslab.c +++ b/module/zfs/metaslab.c @@ -556,7 +556,7 @@ metaslab_group_passivate(metaslab_group_t *mg) return; } - taskq_wait(mg->mg_taskq); + taskq_wait_outstanding(mg->mg_taskq, 0); metaslab_group_alloc_update(mg); mgprev = mg->mg_prev; @@ -1596,7 +1596,7 @@ metaslab_group_preload(metaslab_group_t *mg) int m = 0; if (spa_shutting_down(spa) || !metaslab_preload_enabled) { - taskq_wait(mg->mg_taskq); + taskq_wait_outstanding(mg->mg_taskq, 0); return; } diff --git a/module/zfs/txg.c b/module/zfs/txg.c index 2977bf9f3404..c542b0a75248 100644 --- a/module/zfs/txg.c +++ b/module/zfs/txg.c @@ -471,7 +471,7 @@ txg_wait_callbacks(dsl_pool_t *dp) 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 diff --git a/module/zfs/zfs_vfsops.c b/module/zfs/zfs_vfsops.c index e86b21aeed61..2b532a33359a 100644 --- a/module/zfs/zfs_vfsops.c +++ b/module/zfs/zfs_vfsops.c @@ -1152,8 +1152,8 @@ zfs_sb_teardown(zfs_sb_t *zsb, boolean_t unmounting) */ 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; } @@ -1740,7 +1740,7 @@ zfs_init(void) void zfs_fini(void) { - taskq_wait(system_taskq); + taskq_wait_outstanding(system_taskq, 0); unregister_filesystem(&zpl_fs_type); zfs_znode_fini(); zfsctl_fini();