2.6.14
Released October 27, 2005 changelog
Kernel Core changes
Numa-aware slab allocator: It creates slabs on multiple nodes and manages slabs in such a way that locality of allocations is optimized. Each node has its own list of partial, free and full slabs. All object allocations for a node occur from node specific slab lists (commit - benchmarks)
Lazy page table copies in fork() for VMAs without anonymous pages (the ones with anonymous pages are still copied): Defer copying of ptes until fault time when it is possible to reconstruct the pte from backing store, speeding up fork() greatly specially for processes using lots of shared memory (commit)
Add /proc/$PID/smaps: This file will shows how much memory is resident in each mapping. Useful for people who want to perform memory consumption analysis (commit)
Add /proc/$PID/numa_maps: This file will show on which nodes pages reside (commit)
Add TASK_NONINTERACTIVE task state bit to the cpu scheduler: It can be used by blocking points to mark the task's wait as "non-interactive". This does not mean the task will be considered a CPU-hog - the wait will simply not have an effect on the waiting task's priority - positive or negative alike (commit)
SELinux memory improvements: Reduce access rules memory usage by 20x James Morris explanation (commit)
Spinlock consolidation (commit)
Largefile support for accounting: The accounting subsystem in the kernel can not correctly handle files larger than 2GB. This fixes it by adding the O_LARGEFILE flag (commit)
Detect soft lockups, new debug feature (CONFIG_DETECT_SOFTLOCKUP). When enabled then per-CPU watchdog threads are started, which try to run once per second. If they get delayed for more than 10 seconds then a callback from the timer interrupt detects this condition and prints out a warning message and a stack dump (commit)
Add kzalloc(): new function, it allows to obtain pre-zeroed memory (LWN article) (commit)
Add schedule_timeout_{,un}interruptible() (LWN article) (commit)
Architecture-specific
Four-level page table support for the ppc64 architecture: extends the usable user address range to 44 bits (16T). (commit)
Support hotplug cpu on 32-bit SMP powermacs: When a cpu is off-lined, it is put into sleep mode with interrupts disabled. It can be on-lined again by asserting its soft-reset pin, which is connected to a GPIO pin (commit)
Networking
PPTP (Point-to-Point Tunneling Protocol) conntrack support and NAT helper added to allow proper management of multiple NAT'd PPTP connections. PPTP, a Microsoft-designed protocol, is used in many places to provide VPN access due to the native support in Microsoft Windows. Wikipedia article (commit)
DCCP: "Datagram Congestion Control Protocol". Datagram protocol (like UDP), but with a congestion control mechanism. (LWN article) Currently a RFC draft (commit)
Implement SKB fast cloning: Protocols that make extensive use of SKB cloning, for example TCP, eat at least 2 allocations per packet sent as a result. To cut the kmalloc() count in half, we implement a pre-allocation scheme wherein we allocate 2 sk_buff objects in advance, then use a simple reference count to free up the memory at the correct time (commit)
Add netlink connector: userspace <-> kernel space easy to use communication module which implements easy to use bidirectional message bus using netlink as its backend (commit), also a "async connector mode" (commit)
IPV6: Support several new sockopt / ancillary data in Advanced API (RFC 3542): IPV6_RECVPKTINFO, IPV6_PKTINFO, IPV6_RECVHOPOPTS, IPV6_HOPOPTS, IPV6_RECVDSTOPTS, IPV6_DSTOPTS, IPV6_RTHDRDSTOPTS, IPV6_RECVRTHDR, IPV6_RTHDR, IPV6_RECVHOPOPTS, IPV6_HOPOPTS, IPV6_{RECV,}TCLASS (commit) - (commit)
Filesystems
FUSE: Allows to implement a fully functional filesystem in a userspace program (commit)
9P support: Linux port of the Plan9's 9P protocol (commit)
NTFS: Support journals ($Logfile) which have been modified by chkdsk. This means users can boot into Windows after we marked the volume dirty. The Windows boot will run chkdsk and then reboot. The user can then immediately boot into Linux rather than having to do a full Windows boot first before rebooting into Linux (commit)
RelayFS: Relayfs is just a bunch of per-cpu kernel buffers that can be efficiently written into from kernel code. These buffers are represented as files which can be mmap'ed and directly read from in user space. The purpose of this setup is to provide the simplest possible mechanism allowing potentially large amounts of data to be logged in the kernel and 'relayed' to user space." (commit)
securityfs filesystem (LWN article) (commit)
Enable atomic inode security labeling on ext3 and ext2: it enables atomic security labeling of newly created inodes by altering the fs code to invoke a new LSM hook to obtain the security attribute to apply to a newly created inode and to set up the incore inode security state during the inode creation transaction. This parallels the existing processing for setting ACLs on newly created inodes (commit) - (commit) - (commit)
Drivers
SAS transport class (commit)
Remove ACPI S4 BIOS support (commit)
ipw2100 and ipw2200 wireless drivers (intel centrino) (commit) - (commit)
HostAP: Adds support to work as "Wireless Access Point" (commit)
Wireless extensions API update to version 19 (mail) (commit)
Initial radeon r300-based chips 3D support (commit)
PCI: Support PCI PM CAP version 3 (commit)
Keys: Add possessor permissions to keys. It adds extra permission grants to keys for the possessor of a key in addition to the owner, group and other permissions bits. This makes SUID binaries easier to support without going as far as labelling keys and key targets using the LSM facilities (commit)
Driver for the IBM Hard Drive Active Protection System (HDAPS), an accelerometer found in most modern Thinkpads (LWN article) (commit)
Add Apple USB touchpad driver for the USB touchpad which can be found on post-February 2005 Apple Powerbooks (commit)