|
|
Subscribe / Log in / New account

The end of the 3.12 merge window

By Jonathan Corbet
September 17, 2013
Despite toying with the idea of closing the merge window rather earlier than expected, Linus did, in the end, keep it open until September 16. He repeated past grumbles about maintainers who send their pull requests at the very end of the merge window, though; increasingly, it seems that wise maintainers should behave as if the merge window were a single week in length. Pull requests that are sent too late run a high risk of being deferred until the next development cycle.

In the end, 9,479 non-merge changesets were pulled into the mainline repository for the 3.12 merge window; about 1,000 of those came in after the writing of last week's summary. Few of the changes merged in the final days of the merge window were hugely exciting, but there have been a number of new features and improvements. Some of the more significant, user-visible changes include:

  • Unlike its predecessor, the 3.12 kernel will not be known as "Linux for Workgroups." Instead, for reasons that are not entirely clear, the new code name was "Suicidal Squirrel" for a few days; it then was changed to "One giant leap for frogkind."

  • It is now possible to provide block device partition tables on the kernel command line; see Documentation/block/cmdline-partition.txt for details.

  • The memory management subsystem has gained the ability to migrate huge pages between NUMA nodes.

  • The Btrfs filesystem has the beginning of support for offline deduplication of data blocks. A new ioctl() command (BTRFS_IOC_FILE_EXTENT_SAME) can be used by a user-space program to inform the kernel of extents in two different files that contain the same data. The kernel will, after checking that the data is indeed the same, cause the two files to share a single copy of that data.

  • The HFS+ filesystem now supports POSIX access control lists.

  • The reliable out-of-memory killer patches have been merged. This work should make OOM handling more robust, but it could possibly confuse user-space applications by returning "out of memory" errors in situations where such errors were not seen before.

  • The evdev input layer has gained a new EVIOCREVOKE ioctl() command that revokes all access to a given file descriptor. It can be used to ensure that no evil processes lurk on an input device across sessions. See this patch for an example of how this functionality can be used.

  • New hardware support includes:

    • Miscellaneous: MOXA ART real-time clocks, Freescale i.MX SoC temperature sensors, Allwinner A10/A13 watchdog devices, Freescale PAMU I/O memory management units, TI LP8501 LED controllers, Cavium OCTEON GPIO controllers, and Mediatek/Ralink RT3883 PCI controllers,

    • Networking: Intel i40e Ethernet interfaces.

Changes visible to kernel developers include:

  • The seqlock locking primitive has gained a new "locking reader" type. Normally, seqlocks allow for data structures to be changed while being accessed by readers; the readers are supposed to detect the change (by checking the sequence number) and retry if need be. Some types of readers cannot tolerate changes to the structure, though; in current kernels, they take an expensive write lock instead. The "locking reader" lock will block writers and other locking readers, but allow normal readers through. Note that locking readers could share access with each other; the fact that this sharing does not happen now is an implementation limitation. The functions for working with this type of lock are:

        void read_seqlock_excl(seqlock_t *sl);
        void read_sequnlock_excl(seqlock_t *sl);
    

    There are also the usual variants for blocking hardware and software interrupts; the full set can be found in <linux/seqlock.h>.

  • The new shrinker API has been merged. Most code using this API needed to be changed; the result should be better performance and a better-defined, more robust API. The new "LRU list" mechanism that was a part of that patch set has also been merged.

  • The per-CPU IDA ID allocator patch set has been merged.

Now begins the stabilization phase for the 3.12 kernel. If the usual pattern holds, the final release can be expected on or shortly after Halloween; whether it turns out to be a "trick" or a "treat" depends on how well the testing goes between now and then.

Index entries for this article
KernelReleases/3.12


to post comments

The end of the 3.12 merge window

Posted Sep 17, 2013 17:13 UTC (Tue) by fishface60 (subscriber, #88700) [Link] (2 responses)

What is the use for putting the partition table in the kernel command line?
It says it saves space by not needing the mbr, but doesn't this mean that the partition table is moved somewhere else instead, since the bootloader needs to read it and generate the kernel command line anyway?

The end of the 3.12 merge window

Posted Sep 17, 2013 19:05 UTC (Tue) by aeruder (guest, #22597) [Link]

Think embedded systems where you may have some small flash device with your bootloader/bootloader settings (and kernel command line) and a SD card for the root filesystem.

The end of the 3.12 merge window

Posted Sep 17, 2013 21:33 UTC (Tue) by proski (subscriber, #104) [Link]

I believe it's good for partitions on flash that need to be aligned to some large blocks. It's better to sacrifice a hundred bytes in CMOS and in RAM than to lose 256k on a system that is tight on the flash space.

The end of the 3.12 merge window

Posted Sep 17, 2013 19:01 UTC (Tue) by nix (subscriber, #2304) [Link] (9 responses)

The evdev input layer has gained a new EVIOCREVOKE ioctl() command that revokes all access to a given file descriptor
i.e. revoke() for input fds, just what the X people have been asking for for ages for non-root X server support but that never got in? Did it only get in because it was an (ew) ioctl(), rather than a new syscall like the BSDs use?

The end of the 3.12 merge window

Posted Sep 17, 2013 22:37 UTC (Tue) by daniels (subscriber, #16193) [Link] (8 responses)

Yes, exactly. It got in because it was input-specific, rather than attempting to be generic across all fd types. This was originally known as EVIOCMUTE, but then got changed around.

The end of the 3.12 merge window

Posted Sep 18, 2013 0:12 UTC (Wed) by nix (subscriber, #2304) [Link] (7 responses)

So X can use it then? Unprivileged X is coming?

*loud and prolonged cheers*

(even if it did have to be an ioctl())

The end of the 3.12 merge window

Posted Sep 18, 2013 8:32 UTC (Wed) by blackwood (guest, #44174) [Link] (6 responses)

David Herrmann is working on it, and he's also got an imo really good plan for how to solve the revoke issue for drm device nodes. See his blog at http://dvdhrm.wordpress.com/2013/08/25/sane-session-switc... for the Big Plan. Note that the rendernode stuff merged into 3.12 is part of the prep work here - we first need to untangle the drm render (which can be done by multiple users concurrently, e.g. for background gpgpu stuff) and the modeset side which needs something like revoke.

The end of the 3.12 merge window

Posted Sep 18, 2013 23:31 UTC (Wed) by nix (subscriber, #2304) [Link] (5 responses)

So... unprivileged X, as long as I rip highly stable parts of my system apart and move to systemd? Sigh, why am I not surprised. Any excuse to wedge systemd in somewhere else, and they'll take it...

Maybe a simple replacement for logind in this scenario is possible (it's only being used as a simple message-passer, after all) which doesn't require drinking all the world-encompassing systemd kool-aid.

The end of the 3.12 merge window

Posted Sep 19, 2013 2:17 UTC (Thu) by mathstuf (subscriber, #69389) [Link] (4 responses)

> Maybe a simple replacement for logind in this scenario is possible

You could resurrect ConsoleKit and port the patches going into systemd-logind to it.

The end of the 3.12 merge window

Posted Sep 19, 2013 7:45 UTC (Thu) by Jonno (subscriber, #49613) [Link] (3 responses)

> Maybe a simple replacement for logind in this scenario is possible

> You could resurrect ConsoleKit and port the patches going into systemd-logind to it.

Also, running logind does not require running, or even installing, systemd (though you can't build one without building the other). An upstart/logind or sysvinit/logind setup would require slightly more configuration than a systemd/logind setup, but really no more (but of course different) configuration compared to an upstart/ConsoleKit or sysvinit/ConsoleKit setup, so not out of reach of the distro packagers.

The end of the 3.12 merge window

Posted Sep 19, 2013 13:23 UTC (Thu) by ABCD (subscriber, #53650) [Link] (2 responses)

As of systemd-205, this is no longer true. In that version, systemd-logind lost support for creating its own cgroups (which it requires to operate), instead delegating that responsibility to systemd, which already has to be able to create them for its own purposes.

The end of the 3.12 merge window

Posted Sep 23, 2013 7:08 UTC (Mon) by kugel (subscriber, #70540) [Link] (1 responses)

So there goes the promised modularity of the systemd codebase. It seems the project's statements are not dependable after all.

The end of the 3.12 merge window

Posted Sep 23, 2013 16:12 UTC (Mon) by mathstuf (subscriber, #69389) [Link]

This actually makes sense since systemd is on its way to being /the/ cgroup manager. Taking logind and patching it to call your own cgroup manager (or patching the functionality back in) is probably easier than resurrecting ConsoleKit.

The end of the 3.12 merge window

Posted Sep 17, 2013 19:35 UTC (Tue) by pranith (subscriber, #53092) [Link]

The reason for the code name can be found in Linus` post to G+:

https://plus.google.com/102150693225130002912/posts/9Gjr5...

The end of the 3.12 merge window

Posted Sep 26, 2013 21:08 UTC (Thu) by heijo (guest, #88363) [Link] (3 responses)

System calls suddenly starting to return ENOMEM is a critical and catastrophic ABI breakage.

Lots of things will now malfunction in random ways under OOM conditions (since, of course, syscall return values are almost never checked).

How did that crap get in?!?

The end of the 3.12 merge window

Posted Sep 26, 2013 21:39 UTC (Thu) by dlang (guest, #313) [Link] (2 responses)

OOM conditions are generally times of massive problems for apps.

remember that most systems have the sane setting of using CoW for memory, so they don't get errors when the memory is allocated, but instead sometime later when something dirties ram.

I call this the sane setting, because disabling overcommit and requiring that your system not do the CoW trick ends up wasting so much of your ram that you end up with far more failures, and the vast majority of code doesn't check for errors even in those cases.

The end of the 3.12 merge window

Posted Sep 29, 2013 9:51 UTC (Sun) by kleptog (subscriber, #1183) [Link] (1 responses)

This is a good change. Processes that do check return values (like PostgreSQL) will function much better under this system...

The end of the 3.12 merge window

Posted Sep 29, 2013 22:09 UTC (Sun) by dlang (guest, #313) [Link]

> This is a good change. Processes that do check return values (like PostgreSQL) will function much better under this system...

do they really work better? or is it just theory that they work better?

If overcommit is enabled, the out of memory error isn't that likely to happen when memory is allocated, or a process forks. It's going to happen when memory is used (a variable changed, etc)

but if you turn off overcommit, you either need such a ridiculously large amount of swap that your system will be essentially dead from swapping long before you hit OOM, or you end up being unable to really use all your memory because large chunks of it are reserved for the 'just in case' situation that every CoW page will get split that never happens.


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