Looking forward to 2.6.16
[Posted January 10, 2006 by corbet]
As of this writing, well over 2000 patches have been merged for the
upcoming 2.6.16 kernel. The following list covers some of the more
important or user-visible patches; it is not exhaustive by any means.
Links to LWN articles describing the patches have been provided where
available.
The 2.6.16 merge window will remain open for some time yet, so expect some
more big changes before it is done.
User-visible changes
- OCFS2, Oracle's clustered
filesystem.
- Networking changes include per-packet access control tied into the
IPSec subsystem, an implementation of the "CUBIC" congestion control
algorithm for TCP, an initial implementation of the DCCP protocol over IPv6,
and a sysfs interface to the network bonding module, allowing runtime
reconfiguration without the need to reload the module. There is also
an obscure "intermediate functional block" network device option which can
be used for configuration flexibility and resource sharing.
- Module versioning (storing version information to help binary modules
work with more than one kernel release) is no longer considered
experimental.
- The hotplug helper /sbin/hotplug is now officially
deprecated. The control file /proc/sys/kernel/hotplug has
moved to /sys/kernel/uevent_helper, but it is expected to be
disabled on most systems in favor of udev and the netlink interface.
- Copy-on-write support and NUMA awareness for "hugetlb" pages.
- The software suspend code has seen some work. The encryption option
has been removed; it was little used and offered little protection in
the first place. A few steps have been taken toward moving parts of the
suspend process to user space.
- The swap migration code,
allowing a process's pages to follow it from
one processor to another. As of this writing, the direct migration patches
have not been merged.
- The "SLOB allocator" has been added; it is a replacement for the Linux
slab code which is suited for very small-memory systems.
- The oldest supported version
of gcc for kernel building is now 3.2.
- The ext3 filesystem has a new mount option allowing the location of
the journal device to be specified.
- The module loader now explicitly checks for the ndiswrapper and
driverloader modules, and will mark the kernel tainted if they are
found.
- V9fs (the Plan9
filesystem) is now capable of performing zero-copy
operations. Various other v9fs improvements have been added as well.
- Support for the Cell architecture has been significantly filled out.
- New drivers for ADI Eagle-based USB ADSL modems, ATI and Phillips USB
remote control units, the Marvel Yukon2 Ethernet chipset, the network
interface in the Intel ixp2000 (ARM) CPU, the CS5535 audio device,
Digigram PCXHR boards, and the SyncLink GT and AC serial adaptor families.
Internal API changes
- Ingo Molnar's mutex code
has been added. A few patches converting subsystems over to mutexes
have gone in, but most of that work remains to be done.
- The usb_driver structure has a new field
(no_dynamic_id) which lets a driver disable the addition of
dynamic device IDs. The owner field has also been removed
from this structure.
- Some significant changes to the SCSI subsystem aimed at eliminating
the use of the old scsi_request structure. The SCSI software
IRQ is no longer used; postprocessing happens via the generic block
software IRQ instead.
- Vast numbers of typedefs have been removed from the ALSA code,
bringing that subsystem more in line with kernel coding standards.
Power management support has also been added to a number of ALSA
drivers.
- A new workqueue function schedule_on_each_cpu() will cause a
function to be called on every running processor on the system.
- Much of the core device model code has been reeducated to use the term
"uevent" instead of "hotplug." Some changes which are visible outside
of the core code include:
- kobject_hotplug() becomes kobject_uevent()
- struct kset_hotplug_ops becomes struct
kset_uevent_ops, and its hotplug() member is now
uevent()
- add_hotplug_env_var() becomes add_uevent_var()
- A 64-bit atomic type, atomic_long_t, has been added.
Supported functions are:
- long atomic_long_read(atomic_long_t *l);
- void atomic_long_set(atomic_long_t *l, long i);
- void atomic_long_inc(atomic_long_t *l);
- void atomic_long_dec(atomic_long_t *l);
- void atomic_long_add(long i, atomic_long_t *l);
- void atomic_long_sub(long i, atomic_long_t *l);
- The block I/O barrier code has been rewritten. This
patch changes the barrier API and also adds a new parameter to
end_that_request_last().
- The block_device_operations structure has a new method
getgeo(); its job is to fill in an hd_geometry
structure with information about the drive. With this operation in
place, many block drivers will not need an ioctl() function
at all.
- The dentry structure has been changed: the d_child
and d_rcu fields are now overlaid in a union. This change
shrinks this heavily-used structure and improves its cache behavior.
- struct page has also been changed; it is now smaller on large
SMP systems.
- Linas Vepstas's PCI error
recovery patch has been merged.
- A new list function, list_for_each_entry_safe_reverse(), does
just what one would expect.
- The high-resolution kernel timer code has been merged. Much of the
core works as described in this LWN article, but there
have also been changes and most of the names are different. The new
high-resolution timer interface will be discussed in the
January 19 Kernel Page.
- Buffering for the TTY layer has been completely redone.
As noted above, more changes are likely; stay tuned. Remember that API
changes will eventually find their way onto the LWN 2.6 API Changes Page.
(
Log in to post comments)