- kswapd/bdflush race
If wakeup_bdflush/try_to_free_pages manage to run before bdflush/kswapd
have managed to be scheduled, bdlush_tsk/kswapd_process will be NULL,
resulting in wake_up_process(NULL). This can happen if there is always
a runnable, normal-priority process to be scheduled. The scheduler
seems to prefer recently-scheduled processes over not-recently-scheduled
processes, so this can result in kswapd/bdflush being starved for
arbitrarily long times under the right conditions.
I've brought this up before, proposing a test for NULL in
wakeup_bdflush/try_to_free_pages, which Andrea rejected as adding code
to a common path which would almost never be used.
This time, I'd like to propose having kswapd_init/bdflush_init sleep on
a wait_queue and have kswapd/bdflush wake it up after setting
bdlush_tsk/kswapd_process. This would add two lines of code in each
case, which would run once per boot.
- move in_egroup_p() to sys.c
This is a configuration bug, not specific to the user-mode port. As
things stand, in_egroup_p() is controlled by CONFIG_SYSCTL but a caller
of it is under CONFIG_QUOTA. This makes a kernel with CONFIG_SYSCTL
off and CONFIG_QUOTA on fail to link.
I pointed this out
(http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_01/msg01420.html)
and Jan Kara responded with
http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_02/msg00039.html,
which implied a fix was on its way, but I haven't seen it come through
yet.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/