libzpool: set thread names

Arrange for the thread/task name to be set when new threads are created.
This makes them visible in the process table etc.

pthread_setname_np() is generally available in glibc, musl and FreeBSD,
so no test is required.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #16140
This commit is contained in:
Rob Norris
2024-04-28 11:03:11 +10:00
committed by Brian Behlendorf
parent 7ac00d3c26
commit 4429ad9276
3 changed files with 10 additions and 7 deletions
+4 -1
View File
@@ -92,7 +92,8 @@ zk_thread_wrapper(void *arg)
}
kthread_t *
zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state)
zk_thread_create(const char *name, void (*func)(void *), void *arg,
size_t stksize, int state)
{
pthread_attr_t attr;
pthread_t tid;
@@ -140,6 +141,8 @@ zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state)
VERIFY0(pthread_create(&tid, &attr, zk_thread_wrapper, ztw));
VERIFY0(pthread_attr_destroy(&attr));
pthread_setname_np(tid, name);
return ((void *)(uintptr_t)tid);
}
+2 -2
View File
@@ -295,8 +295,8 @@ taskq_create(const char *name, int nthreads, pri_t pri,
}
for (t = 0; t < nthreads; t++)
VERIFY((tq->tq_threadlist[t] = thread_create(NULL, 0,
taskq_thread, tq, 0, &p0, TS_RUN, pri)) != NULL);
VERIFY((tq->tq_threadlist[t] = thread_create_named(tq->tq_name,
NULL, 0, taskq_thread, tq, 0, &p0, TS_RUN, pri)) != NULL);
return (tq);
}