OpenZFS 6871 - libzpool implementation of thread_create should enforce length is 0
Porting notes: - Several direct callers of zk_thread_create() are passing TS_RUN for the length. The `len` and `state` were inverted,this commit fixes them. Authored by: Eli Rosenthal <eli.rosenthal@delphix.com> Reviewed by: Paul Dagnelie <pcd@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Ported-by: George Melikov mail@gmelikov.ru OpenZFS-issue: https://www.illumos.org/issues/6871 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/8fc9228 Closes #5621
This commit is contained in:
parent
9ef3906a5a
commit
e2a65adbb8
|
@ -704,7 +704,7 @@ run_sweep(void)
|
||||||
|
|
||||||
VERIFY3P(zk_thread_create(NULL, 0,
|
VERIFY3P(zk_thread_create(NULL, 0,
|
||||||
(thread_func_t)sweep_thread,
|
(thread_func_t)sweep_thread,
|
||||||
(void *) opts, TS_RUN, NULL, 0, 0,
|
(void *) opts, 0, NULL, TS_RUN, 0,
|
||||||
PTHREAD_CREATE_JOINABLE), !=, NULL);
|
PTHREAD_CREATE_JOINABLE), !=, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6240,7 +6240,7 @@ ztest_run(ztest_shared_t *zs)
|
||||||
* Create a thread to periodically resume suspended I/O.
|
* Create a thread to periodically resume suspended I/O.
|
||||||
*/
|
*/
|
||||||
VERIFY3P((resume_thread = zk_thread_create(NULL, 0,
|
VERIFY3P((resume_thread = zk_thread_create(NULL, 0,
|
||||||
(thread_func_t)ztest_resume_thread, spa, TS_RUN, NULL, 0, 0,
|
(thread_func_t)ztest_resume_thread, spa, 0, NULL, TS_RUN, 0,
|
||||||
PTHREAD_CREATE_JOINABLE)), !=, NULL);
|
PTHREAD_CREATE_JOINABLE)), !=, NULL);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -6296,7 +6296,7 @@ ztest_run(ztest_shared_t *zs)
|
||||||
|
|
||||||
VERIFY3P(thread = zk_thread_create(NULL, 0,
|
VERIFY3P(thread = zk_thread_create(NULL, 0,
|
||||||
(thread_func_t)ztest_thread,
|
(thread_func_t)ztest_thread,
|
||||||
(void *)(uintptr_t)t, TS_RUN, NULL, 0, 0,
|
(void *)(uintptr_t)t, 0, NULL, TS_RUN, 0,
|
||||||
PTHREAD_CREATE_JOINABLE), !=, NULL);
|
PTHREAD_CREATE_JOINABLE), !=, NULL);
|
||||||
tid[t] = thread->t_tid;
|
tid[t] = thread->t_tid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -262,7 +262,7 @@ typedef struct kthread {
|
||||||
extern kthread_t *zk_thread_current(void);
|
extern kthread_t *zk_thread_current(void);
|
||||||
extern void zk_thread_exit(void);
|
extern void zk_thread_exit(void);
|
||||||
extern kthread_t *zk_thread_create(caddr_t stk, size_t stksize,
|
extern kthread_t *zk_thread_create(caddr_t stk, size_t stksize,
|
||||||
thread_func_t func, void *arg, size_t len,
|
thread_func_t func, void *arg, uint64_t len,
|
||||||
proc_t *pp, int state, pri_t pri, int detachstate);
|
proc_t *pp, int state, pri_t pri, int detachstate);
|
||||||
extern void zk_thread_join(kt_did_t tid);
|
extern void zk_thread_join(kt_did_t tid);
|
||||||
|
|
||||||
|
|
|
@ -147,13 +147,14 @@ zk_thread_helper(void *arg)
|
||||||
|
|
||||||
kthread_t *
|
kthread_t *
|
||||||
zk_thread_create(caddr_t stk, size_t stksize, thread_func_t func, void *arg,
|
zk_thread_create(caddr_t stk, size_t stksize, thread_func_t func, void *arg,
|
||||||
size_t len, proc_t *pp, int state, pri_t pri, int detachstate)
|
uint64_t len, proc_t *pp, int state, pri_t pri, int detachstate)
|
||||||
{
|
{
|
||||||
kthread_t *kt;
|
kthread_t *kt;
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
char *stkstr;
|
char *stkstr;
|
||||||
|
|
||||||
ASSERT0(state & ~TS_RUN);
|
ASSERT0(state & ~TS_RUN);
|
||||||
|
ASSERT0(len);
|
||||||
|
|
||||||
kt = umem_zalloc(sizeof (kthread_t), UMEM_NOFAIL);
|
kt = umem_zalloc(sizeof (kthread_t), UMEM_NOFAIL);
|
||||||
kt->t_func = func;
|
kt->t_func = func;
|
||||||
|
|
Loading…
Reference in New Issue