What's going into 2.6.17, part 2
[Posted March 29, 2006 by corbet]
The flood of patches heading into the mainline continues at full rate -
though the merge window should be closing soon. The following is the
highlights from code merged since
last week's summary, starting
with the user-visible changes:
- The lightweight robust
futexes patch.
- The software RAID (MD) layer can now handle on-the-fly resizing of
RAID5 arrays.
- Support for devfs has been removed from the SCSI subsystem, though it
remains in many other parts of the kernel.
- The user-space software
suspend patch.
- A big XFS update
- An 802.11 software MAC implementation for wireless networking stacks.
Version 20 of the wireless extensions API was also merged.
- The reverse-engineered Broadcom
43xx driver has been merged. As a result, the list of wireless
network cards supported by Linux has just grown considerably.
- A "memory spreading" mechanism which can be used to spread page cache
and filesystem buffer allocations across all nodes of a NUMA system.
- Two new fadvise()
operations for controlling asynchronous file writeout behavior.
- Support for reordering functions in the linked kernel image. The idea
here is to put the highly-used bits of kernel code together so that
the highly-trafficked part of the kernel fits within a single TLB
entry. Currently, only x86-64 has the infrastructure for reordering.
- Multiple-block allocation and mapping has been added to the ext3
filesystem, improving performance for sequential file access patterns.
- A new scheduling domain has been added to represent multi-core
systems.
- A new RTC subsystem has been added, providing support for a variety of
real-time hardware clocks.
Internal kernel API changes merged include:
- A new utility function has been added:
int execute_in_process_context(void (*fn)(void *data),
void *data,
struct execute_work *work);
This function will arrange for fn() to be called in process
context (where it can sleep). Depending on when
execute_in_process_context() is called, fn() could
be invoked immediately or delayed by way of a work queue.
- The SMP alternatives
patch.
- A rework of the relayfs API - but the sysfs interface has been left
out for now.
- A tracing mechanism for developers debugging block subsystem code.
- There is a new internal flag (FMODE_EXEC) used to indicate
that a file has been opened for execution.
- The obsolete MODULE_PARM() macro is gone forevermore.
- A new function, flush_anon_page(), can be used in conjunction
with get_user_pages() to safely perform DMA to anonymous
pages in user space.
- Zero-filled memory can now be allocated from slab caches with
kmem_cache_zalloc(). There is also a new slab debugging
option to produce a /proc/slab_allocators file with detailed
allocation information.
- There are four new ways of creating mempools:
mempool_t *mempool_create_page_pool(int min_nr, int order);
mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size);
mempool_t *mempool_create_kzalloc_pool(int min_nr, size_t size);
mempool_t *mempool_create_slab_pool(int min_nr,
struct kmem_cache *cache);
The first creates a pool which allocates whole pages (the number of
which is determined by order), while the second and third create a
pool backed by kmalloc() and kzalloc(),
respectively. The fourth is a shorthand form of creating slab-backed
pools.
- The prototype for hrtimer_forward() has changed:
unsigned long hrtimer_forward(struct hrtimer *timer,
ktime_t now, ktime_t interval);
The new now argument is expected to be the current time.
This change allows some calls to be optimized. The data
field has also been removed from the hrtimer structure.
- A whole set of generic bit operations (find first set, count set bits,
etc.) has been added, helping to unify this code across architectures
and subsystems.
- The inode f_ops pointer - which refers to the
file_operations structure for the open file - has been marked
const. Quite a bit of code, which used to change that
structure, has been changed to compensate. Similar changes have been
made in many filesystems. "The goal is both to increase
correctness (harder to accidentally write to shared datastructures)
and reducing the false sharing of cachelines with things that get
dirty in .data (while .rodata is nicely read only and thus cache
clean)."
If the usual pattern holds, the merging of new features will stop sometime
around the end of the month, with 2.6.17-rc1 being released shortly
thereafter.
(
Log in to post comments)