Re: First draft list of 2.3.x "Things to fix"

Jeff Dike (jdike@karaya.com)
Tue, 04 Jan 2000 21:40:58 -0500


I'm carrying a few core kernel fixes which I need in order for the user-mode
port to work. This works for now since I'm distributing my stuff separately.
I'm planning on getting it into 2.5, so it would be nice to have these fixes
in 2.4.

- 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/