Beowulf Kernel Patches

Patch Index


linux-2.0.30-bonding
linux-2.0.31-bonding
Affected files:??
Kernel Versions:2.0.30, 2.0.31+
Requires:

Channel bonding support.

This patch contains the following patches:

question_patch-2.0.30
Affected files: arch/i386/config.in
Kernel verions: 2.0.30+
Requires:

This patch adds the "Beowulf Clustering" question to Linux kernel configuration menus.


linux-2.0.31-SMPfix
Affected files:arch/i386/kernel/ksyms.c
include/asm-i386/smp.h
include/asm-i386/ksyms.h
kernel/sched.c
Kernel Versions:2.0.31 (see below for 2.0.30)
Requires:

This patch addresses a problem in the scheduler that appears with SMP support and 2 or more processors. Consider the following scenario: thread B has the kernel lock on CPU 1, thread A is waiting for the kernel lock on CPU 0 and there are no other runnable processes. Now, suppose thread B is waiting for thread A to do something and does something like while(thing_not_done) schedule(); to wait until its done. This will work fine on a single CPU box because thread A will be runnable process and calling schedule() will switch to it. In the case mentioned above, however, the A is running and not runnable. So, schedule() will return without switching to another or releasing the kernel lock.

On a 2.0.30 or previous kernel, this means that doing "while (1) schedule();" will completely hang a system (not even allowing timer interrupts). 2.0.31 fixes this partially by allowing interrupts during such a loop. This patch changes the behavior of the schedule() function a little more so that it will release and reaquire the kernel lock when it doesn't find a runnable process.

This patch contains the following patches:

locking_patch-2.0.31
Affected files:arch/i386/kernel/ksyms.c
include/asm-i386/smp.h
include/asm-i386/ksyms.h
Kernel Versions:2.0.31
Requires:

Between kernel revisions 2.0.30 and 2.0.31. Changes were made to the kernel locking and unlocking code in "arch/i386/kernel/entry.S". This patch updates include/asm-i386/smp.h so that lock_kernel() and unlock_kernel() are consistent with entry.S.

scheduler_patch-2.0.31
Affected files:kernel/sched.c
Kernel Versions:2.0.30
Requires:locking_patch-2.0.31 for 2.0.31

This adds the "yield" functionality outlined above.


linux-2.0.31-tcptw
Affected files:net/ipv4/tcp_input.c
Kernel Versions:2.0.31
Requires:

This patch corrects the kernel's handling of SYN's received on connections in the TIME_WAIT state. This happens frequently when using rsh or rlogin repeatedly between the same pair of machines.

Specifically, 2.0.31 receives the SYN, changes the state on the connection to closed but then fails to continue processing the new SYN as a new connection. The result is that the first machine eventually times out (after about 3 seconds) and resends the SYN after which everything works ok.


Author:Erik Hendriks, hendriks@cesdis.gsfc.nasa.gov.
CESDIS.