By Jonathan Corbet
July 3, 2013
Once upon a time, Linus tried to limit merge window activity to roughly
1,000 commits in any given day. On July 2, the day he began pulling
changes for 3.11, over 3,000 commits made their way into the mainline.
Clearly, a lethargic 1,000 commits/day pace won't cut it in the 3.x era.
Expect this to be another busy development cycle.
That said, the number of new features merged for 3.11 so far is relatively
small. Much of the work pulled to date consists of code cleanups (in the
staging tree, for example), reworking of ARM architecture code to use
common abstractions, and the removal of board-file support for some ARM
subarchitectures.
The user-visible changes that have been pulled so far include:
- The f2fs filesystem now supports security labels, enabling it to be
used with security modules.
- The Lustre
distributed filesystem has been merged into the staging tree. It is
disabled in the build system, though, since it has build problems on a
number of architectures.
- The ARM architecture (both 32- and 64-bit) has gained better huge page
support, in the form
of both the hugetlbfs filesystem and transparent huge pages.
- The ARM64 architecture now supports virtualization with both KVM and
Xen.
- The new O_TMPFILE option to the open() and
openat() system calls allows filesystems to optimize the
creation of temporary files — files which need not be visible in the
filesystem. When O_TMPFILE is present, the provided pathname
is only used to locate the containing directory (and thus the
filesystem where the temporary file should be). So, among other
things, programs using O_TMPFILE should have fewer concerns
about vulnerabilities resulting from symbolic link attacks.
- New hardware support includes:
- Systems and processors:
Freescale i.MX6 SoloLite processors,
Freescale Vybrid VF610 processors,
Samsung EXYNOS5420 processors,
Rockchip RK2928 and RK3xxx processors,
TI Nspire processors, and
STMicroelectronics STiH41x and STiH416 processors.
- Miscellaneous:
Marvell EBU device bus controllers,
Marvell EBU PCIe controllers,
ARM cache-coherent interconnect controllers,
Microchip Technology MCP3204/08 analog-to-digital converters,
Analog Devices AD7303 digital-to-analog converters,
STMicroelectronics LPS331AP pressure sensors, and
Samsung S3C24XX SoC pin controllers.
- Networking:
MTK USB Bluetooth interfaces.
- USB:
Faraday FUSBH200 host controllers and
Cavium Networks Octeon host controllers.
Changes visible to kernel developers include:
- There is a new struct file_operations method:
int (*iterate) (struct file *, struct dir_context *);
Its job is to iterate through the contents of a directory. This
method is meant to serve as a replacement for the readdir() method that
eliminates persistent race conditions associated with updating the
current read position. All internal users have been converted, and
the readdir() method has been removed.
- There are a couple of new functions for working with atomic types:
int wait_on_atomic_t(atomic_t *val, int (*action)(atomic_t *), unsigned mode);
void wake_up_atomic_t(atomic_t *p);
A call to wait_on_atomic_t() will block the calling thread
until the given val goes to zero. Simply decrementing an
atomic_t variable will not be sufficient to wake anybody
waiting, though; an explicit call to wake_up_atomic_t() is
required to do that.
- The CONFIG_HOTPLUG configuration option has been removed; all
kernels are hotplug enabled these days.
- The wait/wound mutex locking primitive
has been merged.
- As part of the read-copy-update
simplification effort, the "tiny-preempt" version of RCU has been
removed from the kernel. From the
commit message: "People currently using TINY_PREEMPT_RCU can
get much better memory footprint with TINY_RCU, or, if they really
need preemptible RCU, they can use TREE_PREEMPT_RCU with a relatively
minor degradation in memory footprint."
- The kernel now has the concept of power-efficient workqueues; these
are simply marked as "unbound," so that jobs queued to them can run on
any CPU in the system. Per-CPU workqueues may perform better in some
situations, but they can also cause sleeping CPUs to wake up; that
wakeup can be avoided if work items can be run on CPUs that are not
sleeping. If the CONFIG_WQ_POWER_EFFICIENT_DEFAULT
configuration option is set, a number of workqueues observed to impact
power performance will be switched to the unbound mode.
Kernel code can explicitly request power-efficient behavior by
creating workqueues with the WQ_POWER_EFFICIENT flag or by
using a couple of new systemwide workqueues:
system_power_efficient_wq or
system_freezable_power_efficient_wq.
- The d_hash() and d_compare() methods in struct
dentry_operations have lost their inode argument.
- A new per-CPU reference count mechanism has been added; see this article for details.
A normal two-week merge window could be expected to close on July 16,
but Linus has occasionally shortened the merge window in recent development
cycles. If the development cycle as a whole lasts for the usual
70 days, then the 3.11 kernel can be expected around
September 10.
(
Log in to post comments)