]> granicus.if.org Git - zfs/commitdiff
Illumos #4730 destroy metaslab group taskq
authorGeorge Wilson <george@delphix.com>
Mon, 19 May 2014 20:04:04 +0000 (12:04 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 22 Jul 2014 16:41:06 +0000 (09:41 -0700)
4730 metaslab group taskq should be destroyed in metaslab_group_destroy()

Reviewed by: Alex Reece <alex.reece@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed by: Rich Lowe <richlowe@richlowe.net>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Approved by: Dan McDonald <danmcd@omniti.com>

References:
  https://www.illumos.org/issues/4730
  https://github.com/illumos/illumos-gate/commit/be08211

Porting notes:

Under ZFSonlinux, one of the effects of not destroying the taskq is that
zdb would never exit (due to the SPL taskq implementation).

Ported-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Prakash Surya <surya1@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2488

module/zfs/metaslab.c

index b4e390c9889486968afa0b5f9cbe54420c88289f..46543a52b046e6f2296b5455c84fe00856e15817 100644 (file)
@@ -333,7 +333,7 @@ metaslab_group_create(metaslab_class_t *mc, vdev_t *vd)
        mg->mg_class = mc;
        mg->mg_activation_count = 0;
 
-       mg->mg_taskq = taskq_create("metaslab_group_tasksq", metaslab_load_pct,
+       mg->mg_taskq = taskq_create("metaslab_group_taskq", metaslab_load_pct,
            minclsyspri, 10, INT_MAX, TASKQ_THREADS_CPU_PCT);
 
        return (mg);
@@ -351,6 +351,7 @@ metaslab_group_destroy(metaslab_group_t *mg)
         */
        ASSERT(mg->mg_activation_count <= 0);
 
+       taskq_destroy(mg->mg_taskq);
        avl_destroy(&mg->mg_metaslab_tree);
        mutex_destroy(&mg->mg_lock);
        kmem_free(mg, sizeof (metaslab_group_t));