diff options
author | Serapheim Dimitropoulos <[email protected]> | 2020-07-29 09:43:33 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2020-07-29 09:43:33 -0700 |
commit | 843e9ca2e1ef347cf6b0271ed84438afc145dfd4 (patch) | |
tree | 5aed2d7636105945e0ef2799bb066beb206be8a0 /module/zfs | |
parent | 5678d3f59389a241c8d9c032513c38209bb53e70 (diff) |
Introduce names for ZTHRs
When debugging issues or generally analyzing the runtime of
a system it would be nice to be able to tell the different
ZTHRs running by name rather than having to analyze their
stack.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Matthew Ahrens <[email protected]>
Co-authored-by: Ryan Moeller <[email protected]>
Signed-off-by: Serapheim Dimitropoulos <[email protected]>
Closes #10630
Diffstat (limited to 'module/zfs')
-rw-r--r-- | module/zfs/arc.c | 8 | ||||
-rw-r--r-- | module/zfs/spa.c | 12 | ||||
-rw-r--r-- | module/zfs/vdev_indirect.c | 3 | ||||
-rw-r--r-- | module/zfs/zthr.c | 17 |
4 files changed, 24 insertions, 16 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 785ad9775..9e9227271 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -7339,10 +7339,10 @@ arc_init(void) kstat_install(arc_ksp); } - arc_evict_zthr = zthr_create_timer(arc_evict_cb_check, - arc_evict_cb, NULL, SEC2NSEC(1)); - arc_reap_zthr = zthr_create_timer(arc_reap_cb_check, - arc_reap_cb, NULL, SEC2NSEC(1)); + arc_evict_zthr = zthr_create_timer("arc_evict", + arc_evict_cb_check, arc_evict_cb, NULL, SEC2NSEC(1)); + arc_reap_zthr = zthr_create_timer("arc_reap", + arc_reap_cb_check, arc_reap_cb, NULL, SEC2NSEC(1)); arc_warm = B_FALSE; diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 2783e9e29..86e5d0125 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -2548,7 +2548,8 @@ static void spa_start_livelist_destroy_thread(spa_t *spa) { ASSERT3P(spa->spa_livelist_delete_zthr, ==, NULL); - spa->spa_livelist_delete_zthr = zthr_create( + spa->spa_livelist_delete_zthr = + zthr_create("z_livelist_destroy", spa_livelist_delete_cb_check, spa_livelist_delete_cb, spa); } @@ -2755,8 +2756,10 @@ spa_start_livelist_condensing_thread(spa_t *spa) spa->spa_to_condense.cancelled = B_FALSE; ASSERT3P(spa->spa_livelist_condense_zthr, ==, NULL); - spa->spa_livelist_condense_zthr = zthr_create( - spa_livelist_condense_cb_check, spa_livelist_condense_cb, spa); + spa->spa_livelist_condense_zthr = + zthr_create("z_livelist_condense", + spa_livelist_condense_cb_check, + spa_livelist_condense_cb, spa); } static void @@ -2772,7 +2775,8 @@ spa_spawn_aux_threads(spa_t *spa) ASSERT3P(spa->spa_checkpoint_discard_zthr, ==, NULL); spa->spa_checkpoint_discard_zthr = - zthr_create(spa_checkpoint_discard_thread_check, + zthr_create("z_checkpoint_discard", + spa_checkpoint_discard_thread_check, spa_checkpoint_discard_thread, spa); } diff --git a/module/zfs/vdev_indirect.c b/module/zfs/vdev_indirect.c index ac3e13d37..fc49bad06 100644 --- a/module/zfs/vdev_indirect.c +++ b/module/zfs/vdev_indirect.c @@ -884,7 +884,8 @@ void spa_start_indirect_condensing_thread(spa_t *spa) { ASSERT3P(spa->spa_condense_zthr, ==, NULL); - spa->spa_condense_zthr = zthr_create(spa_condense_indirect_thread_check, + spa->spa_condense_zthr = zthr_create("z_indirect_condense", + spa_condense_indirect_thread_check, spa_condense_indirect_thread, spa); } diff --git a/module/zfs/zthr.c b/module/zfs/zthr.c index 53c0a0b3d..fdc4b8633 100644 --- a/module/zfs/zthr.c +++ b/module/zfs/zthr.c @@ -14,7 +14,7 @@ */ /* - * Copyright (c) 2017, 2019 by Delphix. All rights reserved. + * Copyright (c) 2017, 2020 by Delphix. All rights reserved. */ /* @@ -269,9 +269,11 @@ zthr_procedure(void *arg) } zthr_t * -zthr_create(zthr_checkfunc_t *checkfunc, zthr_func_t *func, void *arg) +zthr_create(const char *zthr_name, zthr_checkfunc_t *checkfunc, + zthr_func_t *func, void *arg) { - return (zthr_create_timer(checkfunc, func, arg, (hrtime_t)0)); + return (zthr_create_timer(zthr_name, checkfunc, + func, arg, (hrtime_t)0)); } /* @@ -280,8 +282,8 @@ zthr_create(zthr_checkfunc_t *checkfunc, zthr_func_t *func, void *arg) * start working if required) will be triggered. */ zthr_t * -zthr_create_timer(zthr_checkfunc_t *checkfunc, zthr_func_t *func, - void *arg, hrtime_t max_sleep) +zthr_create_timer(const char *zthr_name, zthr_checkfunc_t *checkfunc, + zthr_func_t *func, void *arg, hrtime_t max_sleep) { zthr_t *t = kmem_zalloc(sizeof (*t), KM_SLEEP); mutex_init(&t->zthr_state_lock, NULL, MUTEX_DEFAULT, NULL); @@ -295,8 +297,9 @@ zthr_create_timer(zthr_checkfunc_t *checkfunc, zthr_func_t *func, t->zthr_arg = arg; t->zthr_sleep_timeout = max_sleep; - t->zthr_thread = thread_create(NULL, 0, zthr_procedure, t, - 0, &p0, TS_RUN, minclsyspri); + t->zthr_thread = thread_create_named(zthr_name, NULL, 0, + zthr_procedure, t, 0, &p0, TS_RUN, minclsyspri); + mutex_exit(&t->zthr_state_lock); return (t); |