Remove the P_BUFEXHAUST flag from the syncer process (leaving
it only on the buf_daemon process). The problem is that when the syncer process starts running the worklist, it wants to delete lots of files. It does this by VFS_VGET'ing the vnodes, clearing the blocks in them and bdwrite'ing the buffer. It can process close to a thousand files per second which generates a large number of dirty buffers. So, giving it special priviledge at the buffer trough leads to trouble as the buf_daemon does occationally need a free buffer to proceed and if the syncer has used every last one up, we are toast.
This commit is contained in:
parent
f0f7d38386
commit
411e1480fd
@ -981,8 +981,6 @@ sched_sync(void)
|
||||
EVENTHANDLER_REGISTER(shutdown_pre_sync, shutdown_kproc, p,
|
||||
SHUTDOWN_PRI_LAST);
|
||||
|
||||
p->p_flag |= P_BUFEXHAUST;
|
||||
|
||||
for (;;) {
|
||||
kproc_suspend_loop(p);
|
||||
|
||||
|
@ -981,8 +981,6 @@ sched_sync(void)
|
||||
EVENTHANDLER_REGISTER(shutdown_pre_sync, shutdown_kproc, p,
|
||||
SHUTDOWN_PRI_LAST);
|
||||
|
||||
p->p_flag |= P_BUFEXHAUST;
|
||||
|
||||
for (;;) {
|
||||
kproc_suspend_loop(p);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user