|
|
Subscribe / Log in / New account

The 3.11 merge window opens

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.

Index entries for this article
KernelReleases/3.11


to post comments

The 3.11 merge window opens

Posted Jul 4, 2013 10:49 UTC (Thu) by alonz (subscriber, #815) [Link] (1 responses)

O_TMPFILE is a really welcome enhancement to temporary file semantics… and when properly combined with linkat() support added in f4e0c30, this can really spell an end to many temp-file vulnerabilities.

The 3.11 merge window opens

Posted Jul 4, 2013 14:01 UTC (Thu) by iq-0 (subscriber, #36655) [Link]

90% of the problem with temporary file semantics is that you're still fighting an uphill battle against the oblivious and ignorant. Many developers don't know or care about temporary file semantics or their consequences.

But I do agree that they can help in easier writing of safer code, when used.

The 3.11 merge window opens

Posted Jul 12, 2013 17:53 UTC (Fri) by wtanksleyjr (subscriber, #74601) [Link]

"Linux 3.11 for Workqueues".


Copyright © 2013, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds