mirror of
https://github.com/opnsense/src.git
synced 2026-06-11 09:41:03 -04:00
Make bufdaemon and bufspacedaemon use kthread_suspend_check instead of
kproc_suspend_check. In r329612 bufspacedaemon was turned into a thread
of the bufdaemon process causing both to call kproc_suspend_check with the
same proc argument and that function contains the following while loop:
while (SIGISMEMBER(p->p_siglist, SIGSTOP)) {
wakeup(&p->p_siglist);
msleep(&p->p_siglist, &p->p_mtx, PPAUSE, "kpsusp", 0);
}
So one thread wakes up the other and the other wakes up the first again,
locking up UP machines on shutdown.
Also register the shutdown handlers with SHUTDOWN_PRI_LAST + 100 so they
run after the syncer has shutdown, because the syncer can cause a
situation where bufdaemon help is needed to proceed.
PR: 227404
Reviewed by: kib
Tested by: cy, rmacklem
This commit is contained in:
parent
7d853f62bf
commit
7dfbbc613b
1 changed files with 7 additions and 4 deletions
|
|
@ -791,9 +791,12 @@ bufspace_daemon(void *arg)
|
|||
{
|
||||
struct bufdomain *bd;
|
||||
|
||||
EVENTHANDLER_REGISTER(shutdown_pre_sync, kthread_shutdown, curthread,
|
||||
SHUTDOWN_PRI_LAST + 100);
|
||||
|
||||
bd = arg;
|
||||
for (;;) {
|
||||
kproc_suspend_check(curproc);
|
||||
kthread_suspend_check();
|
||||
|
||||
/*
|
||||
* Free buffers from the clean queue until we meet our
|
||||
|
|
@ -3357,8 +3360,8 @@ buf_daemon()
|
|||
/*
|
||||
* This process needs to be suspended prior to shutdown sync.
|
||||
*/
|
||||
EVENTHANDLER_REGISTER(shutdown_pre_sync, kproc_shutdown, bufdaemonproc,
|
||||
SHUTDOWN_PRI_LAST);
|
||||
EVENTHANDLER_REGISTER(shutdown_pre_sync, kthread_shutdown, curthread,
|
||||
SHUTDOWN_PRI_LAST + 100);
|
||||
|
||||
/*
|
||||
* Start the buf clean daemons as children threads.
|
||||
|
|
@ -3381,7 +3384,7 @@ buf_daemon()
|
|||
bd_request = 0;
|
||||
mtx_unlock(&bdlock);
|
||||
|
||||
kproc_suspend_check(bufdaemonproc);
|
||||
kthread_suspend_check();
|
||||
|
||||
/*
|
||||
* Save speedupreq for this pass and reset to capture new
|
||||
|
|
|
|||
Loading…
Reference in a new issue