3310
Comment:
|
← Revision 19 as of 2017-12-30 01:29:59 ⇥
24447
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Linux 3.17 [https://lkml.org/lkml/2014/12/7/202 has been released] on Sun, 7 Dec 2014 /!\ /!\ /!\ List of changes will be completed soon /!\ /!\ /!\ |
Linux 3.18 [[https://lkml.org/lkml/2014/12/7/202|has been released]] on Sun, 7 Dec 2014 Summary: This release adds support for overlayfs, which allows to combine two filesystem in a single mount point; support for mapping user space memory into the GPU on Radeon devices, a bpf() syscall that allows to upload BPF-like programs that can be attached to events; a TCP congestion algorithm optimized for data centers; the Geneve virtualization encapsulation, support for embedding IP protocols over UDP, improved networking performance thanks to batching the processing of socket buffers, and optional multi-queue SCSI support. There are also new drivers and many other small improvements. <<TableOfContents>> = Prominent features = == Overlayfs == An overlay filesystem combines two filesystems, an 'upper' filesystem and a 'lower' filesystem, into a single file system namespace, modifications will be done to the upper filesystem. It has many uses, but it is most often used for live CDs, where a read-only OS image is used as lower filesystem and a writeable RAM-backed filesystem is used as the upper one. Any modifications will be done in the upper filesystem, thus allowing users to run the OS image provided normally. Overlayfs differs from other "union filesystem" implementations in that after a file is opened all operations go directly to the underlying, lower or upper, filesystems. This simplifies the implementation and allows native performance in these cases. It is possible for both directory trees to be in the same filesystem and there is no requirement that the root of a filesystem be given for either upper or lower. The lower filesystem can be any filesystem supported by Linux and does not need to be writable. The lower filesystem can even be another overlayfs. The upper filesystem will normally be writable and if it is it must support the creation of trusted.* extended attributes, and must provide valid d_type in readdir() responses, so NFS is not suitable. Documentation: [[https://git.kernel.org/linus/7c37fbda85ceb9be7bdb9d5f53e702efc40cf783|commit]] Code: [[https://git.kernel.org/linus/e9be9d5e76e34872f0c37d72e25bc27fe9e2c54c|commit]] == Radeon: mapping of user pages into video memory == [[http://kernelnewbies.org/Linux_3.16#head-822ab6b7936786bb9e91c16ecdcefe6fd20dc6bf|Linux 3.16 added]] the ability to map users addresses into the video memory for Intel hardware. In this release, AMD Radeon has also gained support for this feature. Normal application data can be used as a texture source or even as a render target (depending upon the capabilities of the chipset). This has a number of uses, with zero-copy downloads to the GPU and efficient readback making the intermixed streaming of CPU and GPU operations fairly efficient. This ability has many widespread implications from faster rendering of client-side software rasterisers (chromium), mitigation of stalls due to read back (Mozilla Firefox) and to faster pipelining of texture data (such as pixel buffer objects in OpenGL or data blobs in OpenCL). Code: [[https://git.kernel.org/linus/f72a113a71ab08c4df8a5f80ab2f8a140feb81f6|commit]] == bpf() syscall for eBFP virtual machine programs == bpf() syscall is a multiplexor for a range of different operations on eBPF which can be characterized as "universal in-kernel virtual machine". eBPF is similar to original Berkeley Packet Filter used to filter network packets. eBPF "extends" classic BPF in multiple ways including ability to call in-kernel helper functions and access shared data structures like eBPF maps. The programs can be written in a restricted C that is compiled into eBPF bytecode and executed on the eBPF virtual machine or JITed into native instruction set. eBPF programs are similar to kernel modules. They are loaded by the user process and automatically unloaded when process exits. Each eBPF program is a safe run-to-completion set of instructions. eBPF verifier statically determines that the program terminates and is safe to execute. The programs are attached to different events. These events can be packets, tracepoint events and other types in the future. Beyond storing data the programs may call into in-kernel helper functions which may, for example, dump stack, do trace_printk or other forms of live kernel debugging. Recommended LWN article: [[http://lwn.net/Articles/612878/|The BPF system call API, version 14]] ebfp() man page and design documentation can be read on the merge commit: [[https://git.kernel.org/linus/b4fc1a460f3017e958e6a8ea560ea0afd91bf6fe|commit]] Code: [[https://git.kernel.org/linus/99c55f7d47c0dc6fc64729f37bf435abf43f4c60|commit 1]], [[https://git.kernel.org/linus/db20fd2b01087bdfbe30bce314a198eefedcc42e|2]], [[https://git.kernel.org/linus/09756af46893c18839062976c3252e93a1beeba7|3]], [[https://git.kernel.org/linus/0a542a86d73b1577e7d4f55fc95dcffd3fe62643|4]], [[https://git.kernel.org/linus/51580e798cb61b0fc63fa3aa6c5c975375aa0550|5]], [[https://git.kernel.org/linus/cbd357008604925355ae7b54a09137dabb81b580|6]], [[https://git.kernel.org/linus/0246e64d9a5fcd4805198de59b9b5cf1f974eb41|7]], [[https://git.kernel.org/linus/475fb78fbf48592ce541627c60a7b331060e31f5|8]], [[https://git.kernel.org/linus/17a5267067f3c372fec9ffb798d6eaba6b5e6a4c|9]], [[https://git.kernel.org/linus/3c731eba48e1b0650decfc91a839b80f0e05ce8f|10]] == TCP: Data Center TCP congestion algorithm == This release adds the Data Center TCP (DCTCP) congestion control algorithm. DCTCP is an enhancement to the TCP congestion control algorithm for data center networks. DCTCP has been designed for workloads typical of data center environments to provide/achieve: high burst tolerance, low latency and high throughput. For more details about DCTCP, see the [[http://simula.stanford.edu/~alizade/Site/DCTCP.html|DCTCP web page]] Code: [[https://git.kernel.org/linus/e3118e8359bb7c59555aca60c725106e6d78c5ce|commit]] == Networking: Geneve Virtualization Encapsulation == Advent of network virtualization has caused a surge of renewed interest and a corresponding increase in the introduction of new protocols, ranging all the way from VLANs and MPLS through the more recent VXLAN, NVGRE, and STT. Existing tunnel protocols have each attempted to solve different aspects of the new requirements, only to be quickly rendered out of date. This release adds Geneve, a protocol which seeks to avoid these problems by providing a framework for tunneling that provide Layer 2 Networks over Layer 3 Networks. For more information see http://tools.ietf.org/html/draft-gross-geneve-01 Related VMware blog post: [[http://blogs.vmware.com/cto/geneve-vxlan-network-virtualization-encapsulations/|Geneve, VXLAN, and Network Virtualization Encapsulations]] Code: [[https://git.kernel.org/linus/0b5e8b8eeae40bae6ad7c7e91c97c3c0d0e57882|commit]] == Networking performance optimization: transmission queue batching == This release adds support for deferred flushing of transmission [[http://vger.kernel.org/~davem/skb.html|SKB]]s (socket buffers) to the networking driver. Processing the transmission queue is expensive, so some batching shares that cost with other SKBs. This change allows to achieve 10 Gbit/s full TX wirespeed smallest packet size on a single CPU core (14.8 Mpps). Several drivers already have support for this feature: i40e, igb, ixgbe, mlx4, virtio_net, more will follow in next releases. Recommended LWN article: [[http://lwn.net/Articles/615238/|Bulk network packet transmission]] Recommended blog post [[http://netoptimizer.blogspot.dk/2014/10/unlocked-10gbps-tx-wirespeed-smallest.html|Unlocked 10Gbps TX wirespeed smallest packet single core]] Code: see the blog post link == Foo-over-UDP support == This release adds the ability to encapsulate any IP protocol over UDP including tunnels (IPIP, GRE, SIT). The rationale for this funcionality is that network mechanisms, hardware and optimizations for UDP (such as ECMP and RSS) can be leveraged to provide better service. GRE, IPIP, and SIT have been modified with netlink commands to configure use of FOU on transmit. A new "ip fou" has been added in newer releases of ip to make use of this feature. Details on configuration can be found in the merge link. Recommended LWN link: [[http://lwn.net/Articles/614348/|Foo over UDP]] Merge link: [[https://git.kernel.org/linus/fb5690d2458340b645ea3b36e8db560cb3272e65|merge]] == Optional multiqueue SCSI support == Linux 3.13 [[http://kernelnewbies.org/Linux_3.13#head-3e5f0c2bcebc98efd197e3036dd814eadd62839c|added]] a new design for the block layer that allowed to process multiple IO queues in parallel. This feature, however, wasn't transparent, and required modifications in drivers to support it. In this release, support for the multi-queue layer has been added to the SCSI layer (used by ATA and SATA drivers) as an optional configuration option. Code: [[https://git.kernel.org/linus/24c20f10583647e30afe87b6f6d5e14bc7b1cbc6|commit]] |
Line 12: | Line 84: |
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.18-DriversArch Linux_3.18-DriversArch page] = File Systems = |
All the driver and architecture-specific changes can be found in the [[http://kernelnewbies.org/Linux_3.18-DriversArch|Linux_3.18-DriversArch page]] = File systems = * F2FS * Introduce FITRIM discard support [[https://git.kernel.org/linus/4b2fecc84655055a6a1fe9151786992ac04b56ce|commit]] * Support atomic writes [[https://git.kernel.org/linus/88b88a66797159949cec32eaab12b4968f6fae2d|commit]] * Support large sector size [[https://git.kernel.org/linus/55cf9cb63f0e5439f208d78ed944de9a8df65011|commit]] * Support volatile operations for transient data [[https://git.kernel.org/linus/02a1335f25a386db9afc68f8315162f862aac93f|commit]] * ext4 * Support freezing ext2 (nojournal) file systems [[https://git.kernel.org/linus/bb0445765866e5b1607af81e2f48ca5a8efbeed8|commit]] * Add sysfs entry showing whether the fs contains errors [[https://git.kernel.org/linus/52c198c6820f68b6fbe1d83f76e34a82bf736024|commit]] * NFS * Implement NFS v4.2 SEEK operation, allowing to use lseek() call with either the SEEK_HOLE or SEEK_DATA flags set [[https://git.kernel.org/linus/1c6dcbe5ceff81c2cf8d929646af675cd59fe7c0|commit]], [[https://git.kernel.org/linus/24bab491220faa446d945624086d838af41d616c|commit]] * Allow turning off nfsv3 readdir_plus [[https://git.kernel.org/linus/18c01ab30288d9d0a7d80b08b659531f37ed379d|commit]] * nfsd: add a v4_end_grace file to /proc/fs/nfsd that allows a privileged userland process to end the v4 grace period early [[https://git.kernel.org/linus/7f5ef2e900d9462bf9cffaf6bb246ed87a20a6d6|commit]] * lockd: add a /proc/fs/lockd/nlm_end_grace file that will allow a (privileged) userland process to end the NLM grace period early [[https://git.kernel.org/linus/d68e3c4aa416d592d79152a49af121e4ecb204e3|commit]] * SMB * Add mfsymlinks support for SMB2.1/SMB3 [[https://git.kernel.org/linus/5ab97578cbb3bf9a28dec4534cb86fbc35e600bb|commit]], [[https://git.kernel.org/linus/c22870ea2deb2841402133909cfa707a2c0b12ed|commit]] * Allow mknod and mkfifo on SMB2/SMB3 mounts [[https://git.kernel.org/linus/db8b631d4bc4eaa9f7e13a6b0a287306cac0cb72|commit]] * Allow conversion of characters in Mac remap range [[https://git.kernel.org/linus/b693855fe67314d501aae74b9adff8788eb2fd82|commit]], [[https://git.kernel.org/linus/a4153cb1d3cb7d7c16968b0a9cf7c8aacf31424e|commit]] * Remap reserved POSIX characters by default [[https://git.kernel.org/linus/2baa2682531ff02928e2d3904800696d9e7193db|commit]] * Btrfs * Make defragment work with nodatacow option [[https://git.kernel.org/linus/47059d930f0e002ff851beea87d738146804726d|commit]] * Improve free space cache management and space allocation [[https://git.kernel.org/linus/200055239604cf4bfaed40d8f404228ea606b4f9|commit]] * Implement repair function when direct read fails [[https://git.kernel.org/linus/8b110e393c5a6e72d50fcdf9fa7ed8b647cfdfc9|commit]] |
Line 16: | Line 115: |
* Add debug sysfs attribute set [http://git.kernel.org/linus/65b65735fede29b516fed1d8c2391e8bc373b805 commit], [http://git.kernel.org/linus/2e2271787419a12496bf5da5c3028a9c73c9697f commit] | * Add debug sysfs attribute set [[https://git.kernel.org/linus/65b65735fede29b516fed1d8c2391e8bc373b805|commit]], [[https://git.kernel.org/linus/2e2271787419a12496bf5da5c3028a9c73c9697f|commit]] * NTFS * Add FIBMAP ioctl support [[https://git.kernel.org/linus/3f7fc6f2a2ba0f72a09e9f9999c3812fdee8fe70|commit]] |
Line 19: | Line 120: |
* Smack: Add a new access (aka permissive) mode [http://git.kernel.org/linus/d166c8024d620d654b12834fac354fb4203c6c22 commit] = Crypto = * Software asynchronous crypto daemon that provides the kernel thread to assist multi-buffer crypto algorithms for submitting jobs and flushing jobs in multi-buffer crypto algorithms [http://git.kernel.org/linus/116177782392739f06868cfc2e6df5267aec4639 commit], [http://git.kernel.org/linus/12d2513d5fe23aed53872f9303d9cb4b61b60d80 commit], [http://git.kernel.org/linus/ad61e042e9151b55b393d5875e467e7fe0c7470c commit], [http://git.kernel.org/linus/2249cbb53ead12539c4ab7f422400e82263d174b commit], [http://git.kernel.org/linus/1e65b81a90df50bf450193065cc9073b706b8dda commit] |
* Smack: Add a new access (aka permissive) mode [[https://git.kernel.org/linus/d166c8024d620d654b12834fac354fb4203c6c22|commit]] * ima: provide 'ima_appraise=log' kernel option that allows logging only mode without fixing it, in order to properly analyze the system [[https://git.kernel.org/linus/2faa6ef3b21152cc05b69a84113625dcee63176f|commit]] = Block = * Implement readpages() to optimize sequential reads of /dev block devices [[https://git.kernel.org/linus/447f05bb488bff4282088259b04f47f0f9f76760|commit]] * SCSI target userspace backend that uses UIO + shared memory ring to dispatch I/O and control commands into user-space [[https://git.kernel.org/linus/7c9e7a6fe11c8dc5b3b9d0e889dde73347247584|commit]] * dm raid: add discard support for RAID levels 1 and 10 [[https://git.kernel.org/linus/75b8e04bbf01bdd5c42a1d8ac54abf757196ce49|commit]] and 4, 5 and 6 [[https://git.kernel.org/linus/48cf06bc5f508d5f71bc0fd7530daebb12a48428|commit]] * zram memory size limitation [[https://git.kernel.org/linus/9ada9da9573f3460b156b7755c093e30b258eacb|commit]] * zram: report maximum used memory [[https://git.kernel.org/linus/461a8eee6af3b55745be64bea403ed0b743563cf|commit]] = Memory management = * memory-hotplug: add /sys/devices/system/memory/memoryX/valid_zones, shows which zone this memory block can be onlined to [[https://git.kernel.org/linus/ed2f240094f900833ac06f533ab8bbcf0a1e8199|commit]] * balloon_compaction: adds three counters into /proc/vmstat: "balloon_inflate", "balloon_deflate" and "balloon_migrate". They accumulate balloon activity. Under option CONFIG_MEMORY_BALLOON [[https://git.kernel.org/linus/09316c09dde33aae14f34489d9e3d243ec0d5938|commit]] * slab merge: If new creating slab has similar size and property with existent slab, this feature reuse it rather than creating new one [[https://git.kernel.org/linus/12220dea07f1ac6ac717707104773d771c3f3077|commit]] * Support compiling out madvise() and fadvise() [[https://git.kernel.org/linus/d3ac21cacc24790eb45d735769f35753f5b56ceb|commit]] * Support fadvise without CONFIG_MMU [[https://git.kernel.org/linus/887e7019e3b8f00c7901c0bc66fb689ced69f7b4|commit]] * Introduce dump_vma [[https://git.kernel.org/linus/0bf55139782db1fa96af66e37cc84afde18443ef|commit]] * NUMA: Memory zones are allocated by the page allocator in either node or zone order. This release defaults node-ordering on 64-bit NUMA, and to zone-ordering on 32-bit [[https://git.kernel.org/linus/3193913ce62c63056bc67a6ae378beaf494afa66|commit]] * Stress test for memory compaction [[https://git.kernel.org/linus/0085d61fe05ec5a3739afb8ffb8a88130402633e|commit]] = Cryptography = * Software asynchronous crypto daemon that provides the kernel thread to assist multi-buffer crypto algorithms for submitting jobs and flushing jobs in multi-buffer crypto algorithms [[https://git.kernel.org/linus/116177782392739f06868cfc2e6df5267aec4639|commit]], [[https://git.kernel.org/linus/12d2513d5fe23aed53872f9303d9cb4b61b60d80|commit]], [[https://git.kernel.org/linus/ad61e042e9151b55b393d5875e467e7fe0c7470c|commit]], [[https://git.kernel.org/linus/2249cbb53ead12539c4ab7f422400e82263d174b|commit]], [[https://git.kernel.org/linus/1e65b81a90df50bf450193065cc9073b706b8dda|commit]] * KEYS: Implement binary asymmetric key ID handling [[https://git.kernel.org/linus/7901c1a8effbe5f89673bfc09d6e37b8f334f1a7|commit]] = Virtualization = * Xen * Xen PV SCSI backend driver [[https://git.kernel.org/linus/d9d660f6e562a47b4065eeb7e538910b0471b988|commit]] * Add Xen PV SCSI frontend driver [[https://git.kernel.org/linus/8beb8d4c91d652617dc992de565ec9904361c33e|commit]] * Remap Xen Identity Mapped RAM [[https://git.kernel.org/linus/4fbb67e3c87b806ad54445a1b4a9c6bde2359c98|commit]] = Tracing & perf = * perf tools * Add +field argument support for --field option [[https://git.kernel.org/linus/2f3f9bcf000b2043a480e7cc0cae582559fb0f13|commit]] * Add +field argument support for --sort option [[https://git.kernel.org/linus/1a1c0ffb2adb2d2ce7bb9c4dfd2935ba345cf2c2|commit]] * Add perf-with-kcore script [[https://git.kernel.org/linus/c501e90b4700e4f247ccdcf5ae81f9846a2ef5f9|commit]] * Add report.queue-size config file option [[https://git.kernel.org/linus/94786b67b5f4577c16486e8eb10ff045e59f80ef|commit]] * Add support to new style format of kernel PMU event [[https://git.kernel.org/linus/ba32a4511c65e41958384d2f7a046a6ec6e151e5|commit]] * Let a user specify a PMU event without any config terms [[https://git.kernel.org/linus/ad96227349901838e1a7f96f1dc22d96a97520c0|commit]] * Let default config be defined for a PMU [[https://git.kernel.org/linus/dc0a6202421170a6d8d2c6f5176575b3f60e0f85|commit]] * top * Add -w option for setting column width [[https://git.kernel.org/linus/cf59002fdebc9c00ee29233e65bc39dd69e0eaf6|commit]] * Add a visual cue for toggle zeroing of samples [[https://git.kernel.org/linus/1e378ebd117d1828b9d5dbe0538887478fcb9d84|commit]] * Handle 'z' key for toggle zeroing samples in TUI [[https://git.kernel.org/linus/42337a222c93cd22864f20ef9b157765ab1086a0|commit]] * perf bench futex: Support operations for shared futexes [[https://git.kernel.org/linus/86c87e13f8a5dffc6cc7b0f37340f815dc172945|commit]] * perf kvm stat report: Enable the target.system_wide flag [[https://git.kernel.org/linus/f181957c2849478fc963a8ac3c7dacf0a87c6b05|commit]] |
Line 27: | Line 170: |
* netfilter: * nftables: IPv4 masquerading support [http://git.kernel.org/linus/8dd33cc93ec92b8460ed2ad98c6db39276f6a72b commit] * nftables: IPv6 masquerading support [http://git.kernel.org/linus/be6b635cd674add9410efa9ac6f03e0040848b12 commit] * nftables: allow to filter from prerouting and postrouting [http://git.kernel.org/linus/36d2af5998258344993dd43729997a7a3baa9d99 commit] * nftables: extend NFT_MSG_DELTABLE to support flushing the ruleset [http://git.kernel.org/linus/b9ac12ef099707f405d7478009564302d7ed8393 commit] * nfnetlink_acct: add filter support to nfacct counter list/reset [http://git.kernel.org/linus/f111f780ae1abf4cdc464f24293be90c010a04f6 commit] * nftables: export rule-set generation ID [http://git.kernel.org/linus/84d7fce693884897c6196cc98228a2ad56ae2a9a commit] * nft_meta: Add cpu attribute support, allows to match packets with cpu number [http://git.kernel.org/linus/afc5be3079796b024823bad42dc5ebf716453575 commit] * nft_meta: add pkttype support for ip, ipv6 and inet families of tables. Allows to match packets based on the link layer information [http://git.kernel.org/linus/e2a093ff0dbfa4c5d99f25241cf33325e9691d91 commit] * nft_meta: add devgroup support in meta expresion, lets match device group of a packets incoming or outgoing interface [http://git.kernel.org/linus/3045d76070abe725dbb7fd8ff39c27b820d5a7eb commit] * ipset: hash:mac type added to ipset, by which one can store MAC (ethernet address) elements in a set. [http://git.kernel.org/linus/07034aeae152de52c29f032ca995bf9dafbe24e2 commit] * conntrack: disable generic tracking for known protocols [http://git.kernel.org/linus/db29a9508a9246e77087c5531e45b2c88ec6988b commit] |
* ipv4: implement igmp_qrv sysctl to tune IGMP robustness variable [[https://git.kernel.org/linus/a9fe8e29945d56f35235a3a0fba99b4cf181d211|commit]] * ipv6: add sysctl_mld_qrv to configure how many retransmit of unsolicited Multicast Listener Discovery retransmit should happen. Admins might want to tune this on lossy links [[https://git.kernel.org/linus/2f711939d2ea9dfaecebecd1324d2ec7a7a21f65|commit]] * ipv6: notify userspace when we added or changed an ipv6 token [[https://git.kernel.org/linus/b2ed64a97430a26a63c6ea91c9b50e639a98dfbc|commit]] * ipvs: Allow heterogeneous pools [[https://git.kernel.org/linus/6cff339bbd5f9eda7a5e8a521f91a88d046e6d0c|commit]], [[https://git.kernel.org/linus/bc18d37f676f76edbb5e0c37def78c704b5fbed0|commit]] * TCP: Restore RFC5961-compliant behavior for SYN packets [[https://git.kernel.org/linus/0c228e833c88e3aa029250f5db77d5968c5ce5b5|commit]] * TCP: TCP Small Queues and strange attractors. The purpose is to try to keep number of packets in qdisc as small as possible [[https://git.kernel.org/linus/9b462d02d6dd671a9ebdc45caed6fe98a53c0ebe|commit]] * TCP: improve undo on timeout (increases the undo events by 50% on Google servers) [[https://git.kernel.org/linus/989e04c5bc3ff77d65e1f0d87bf7904dfa30d41c|commit]] * TIPC: add name distributor resiliency queue, helps to avoid race conditions in TIPC distributed name table updates [[https://git.kernel.org/linus/a5325ae5b8bff051933a754db7727fc9823e6414|commit]] * UDP: GRO for UDPv6 [[https://git.kernel.org/linus/57c67ff4bd92af634f7c91c40eb02a96dd785dda|commit]] * ip_tunnel: Add GUE support [[https://git.kernel.org/linus/bc1fc390e1728672b5b343b85185fcc1fe41043b|commit]] * ethtool: adds new ethtool cmd, ETHTOOL_GTUNABLE & ETHTOOL_STUNABLE for getting and setting tunable values [[https://git.kernel.org/linus/f0db9b073415848709dd59a6394969882f517da9|commit]] * pktgen: add flag NO_TIMESTAMP to disable timestamping [[https://git.kernel.org/linus/afb84b6261841f8ab387e267e748236fa805bea0|commit]] * xfrm: Enable to specify local and remote prefix length thresholds for the policy hash table via a netlink XFRM_MSG_NEWSPDINFO message [[https://git.kernel.org/linus/880a6fab8f6ba5b5abe59ea68533202ddea1012c|commit]] * openvswitch: Add recirc and hash action. [[https://git.kernel.org/linus/971427f353f3c42c8dcef62e7124440df68eb809|commit]] * openvswitch: Add support for Geneve tunneling. [[https://git.kernel.org/linus/f5796684069e0c71c65bce6a6d4766114aec1396|commit]] * Bluetooth: 6lowpan: Enable multicast support [[https://git.kernel.org/linus/156395c9989a76228e0da40e71267a3d4fb07419|commit]] * bridge: Add a default_pvid sysfs attribute [[https://git.kernel.org/linus/96a20d9d7fff7068a2233b00379f0778a150bf86|commit]] * bridge: Add filtering support for default_pvid [[https://git.kernel.org/linus/5be5a2df40f005ea7fb7e280e87bbbcfcf1c2fc0|commit]] * Wireless * Support DTPC IE (from Cisco Client eXtensions) [[https://git.kernel.org/linus/c8d6591752e96c550cb98b781326d72d8eedcc79|commit]] * Add Radio Resource Management support to assoc request [[https://git.kernel.org/linus/|commit]] * Add WMM traffic stream API [[https://git.kernel.org/linus/960d01acf62747d6518694f92be5b06f67473833|commit]] * Re-enable CSA for drivers that support it [[https://git.kernel.org/linus/f41ef64853fb1e02728e56b2d0d55aef8ed12b26|commit]] * nftables * IPv4 masquerading support [[https://git.kernel.org/linus/8dd33cc93ec92b8460ed2ad98c6db39276f6a72b|commit]] * IPv6 masquerading support [[https://git.kernel.org/linus/be6b635cd674add9410efa9ac6f03e0040848b12|commit]] * allow to filter from pre-routing and post-routing [[https://git.kernel.org/linus/36d2af5998258344993dd43729997a7a3baa9d99|commit]] * extend NFT_MSG_DELTABLE to support flushing the ruleset [[https://git.kernel.org/linus/b9ac12ef099707f405d7478009564302d7ed8393|commit]] * nfnetlink_acct: add filter support to nfacct counter list/reset [[https://git.kernel.org/linus/f111f780ae1abf4cdc464f24293be90c010a04f6|commit]] * export rule-set generation ID [[https://git.kernel.org/linus/84d7fce693884897c6196cc98228a2ad56ae2a9a|commit]] * nft_meta: Add CPU attribute support, allows to match packets with CPU number [[https://git.kernel.org/linus/afc5be3079796b024823bad42dc5ebf716453575|commit]] * nft_meta: add pkttype support for ip, ipv6 and inet families of tables. Allows to match packets based on the link layer information [[https://git.kernel.org/linus/e2a093ff0dbfa4c5d99f25241cf33325e9691d91|commit]] * nft_meta: add devgroup support in meta expression, lets match device group of a packets incoming or outgoing interface [[https://git.kernel.org/linus/3045d76070abe725dbb7fd8ff39c27b820d5a7eb|commit]] * netfilter * ipset: hash:mac type added to ipset, by which one can store MAC (Ethernet address) elements in a set. [[https://git.kernel.org/linus/07034aeae152de52c29f032ca995bf9dafbe24e2|commit]] * conntrack: disable generic tracking for known protocols [[https://git.kernel.org/linus/db29a9508a9246e77087c5531e45b2c88ec6988b|commit]] = Core (various) = * Add support for gcc 5 [[https://git.kernel.org/linus/71458cfc782eafe4b27656e078d379a34e472adf|commit]] * locktorture: Add infrastructure for torturing read locks [[https://git.kernel.org/linus/4f6332c1dce9c64ef6bf93842067250dd850e482|commit]], mutexes [[https://git.kernel.org/linus/42ddc75ddd478edac6ad9dc8c63abb4441541af2|commit]], rwlocks [[https://git.kernel.org/linus/e34191fad8e5d9fe4e76f6d03b5e29e3eae7535a|commit]], rwsems [[https://git.kernel.org/linus/4a3b427f0b27c7e15edfa607524ff012a155337a|commit]] * kbuild: handle module compression while running 'make modules_install'. [[https://git.kernel.org/linus/beb50df39e91745604ce3cb9dc6a503f39f4383d|commit]] * Increase the buffer-head per-CPU LRU size [[https://git.kernel.org/linus/86cf78d73de8c6bfa89804b91ee0ace71a459961|commit]] * sched: Add default-disabled option to BUG() when stack end location is overwritten [[https://git.kernel.org/linus/0d9e26329b0c9263d4d9e0422d80a0e73268c52f|commit]] * sched: Improve sysbench performance by fixing spurious active migration [[https://git.kernel.org/linus/43f4d66637bc752e93a77ff2536474a5a3888442|commit]] * prctl: introduce PR_SET_MM_MAP operation to allow checkpoint/restore utilities to restore a process memory properties [[https://git.kernel.org/linus/f606b77f1a9e362451aca8f81d8f36a3a112139e|commit]] |
Linux 3.18 has been released on Sun, 7 Dec 2014
Summary: This release adds support for overlayfs, which allows to combine two filesystem in a single mount point; support for mapping user space memory into the GPU on Radeon devices, a bpf() syscall that allows to upload BPF-like programs that can be attached to events; a TCP congestion algorithm optimized for data centers; the Geneve virtualization encapsulation, support for embedding IP protocols over UDP, improved networking performance thanks to batching the processing of socket buffers, and optional multi-queue SCSI support. There are also new drivers and many other small improvements.
Contents
-
Prominent features
- Overlayfs
- Radeon: mapping of user pages into video memory
- bpf() syscall for eBFP virtual machine programs
- TCP: Data Center TCP congestion algorithm
- Networking: Geneve Virtualization Encapsulation
- Networking performance optimization: transmission queue batching
- Foo-over-UDP support
- Optional multiqueue SCSI support
- Drivers and architectures
- File systems
- Security
- Block
- Memory management
- Cryptography
- Virtualization
- Tracing & perf
- Networking
- Core (various)
1. Prominent features
1.1. Overlayfs
An overlay filesystem combines two filesystems, an 'upper' filesystem and a 'lower' filesystem, into a single file system namespace, modifications will be done to the upper filesystem. It has many uses, but it is most often used for live CDs, where a read-only OS image is used as lower filesystem and a writeable RAM-backed filesystem is used as the upper one. Any modifications will be done in the upper filesystem, thus allowing users to run the OS image provided normally. Overlayfs differs from other "union filesystem" implementations in that after a file is opened all operations go directly to the underlying, lower or upper, filesystems. This simplifies the implementation and allows native performance in these cases.
It is possible for both directory trees to be in the same filesystem and there is no requirement that the root of a filesystem be given for either upper or lower. The lower filesystem can be any filesystem supported by Linux and does not need to be writable. The lower filesystem can even be another overlayfs. The upper filesystem will normally be writable and if it is it must support the creation of trusted.* extended attributes, and must provide valid d_type in readdir() responses, so NFS is not suitable.
Documentation: commit Code: commit
1.2. Radeon: mapping of user pages into video memory
Linux 3.16 added the ability to map users addresses into the video memory for Intel hardware. In this release, AMD Radeon has also gained support for this feature. Normal application data can be used as a texture source or even as a render target (depending upon the capabilities of the chipset). This has a number of uses, with zero-copy downloads to the GPU and efficient readback making the intermixed streaming of CPU and GPU operations fairly efficient. This ability has many widespread implications from faster rendering of client-side software rasterisers (chromium), mitigation of stalls due to read back (Mozilla Firefox) and to faster pipelining of texture data (such as pixel buffer objects in OpenGL or data blobs in OpenCL).
Code: commit
1.3. bpf() syscall for eBFP virtual machine programs
bpf() syscall is a multiplexor for a range of different operations on eBPF which can be characterized as "universal in-kernel virtual machine". eBPF is similar to original Berkeley Packet Filter used to filter network packets. eBPF "extends" classic BPF in multiple ways including ability to call in-kernel helper functions and access shared data structures like eBPF maps. The programs can be written in a restricted C that is compiled into eBPF bytecode and executed on the eBPF virtual machine or JITed into native instruction set.
eBPF programs are similar to kernel modules. They are loaded by the user process and automatically unloaded when process exits. Each eBPF program is a safe run-to-completion set of instructions. eBPF verifier statically determines that the program terminates and is safe to execute. The programs are attached to different events. These events can be packets, tracepoint events and other types in the future. Beyond storing data the programs may call into in-kernel helper functions which may, for example, dump stack, do trace_printk or other forms of live kernel debugging.
Recommended LWN article: The BPF system call API, version 14
ebfp() man page and design documentation can be read on the merge commit: commit
Code: commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1.4. TCP: Data Center TCP congestion algorithm
This release adds the Data Center TCP (DCTCP) congestion control algorithm. DCTCP is an enhancement to the TCP congestion control algorithm for data center networks. DCTCP has been designed for workloads typical of data center environments to provide/achieve: high burst tolerance, low latency and high throughput.
For more details about DCTCP, see the DCTCP web page
Code: commit
1.5. Networking: Geneve Virtualization Encapsulation
Advent of network virtualization has caused a surge of renewed interest and a corresponding increase in the introduction of new protocols, ranging all the way from VLANs and MPLS through the more recent VXLAN, NVGRE, and STT. Existing tunnel protocols have each attempted to solve different aspects of the new requirements, only to be quickly rendered out of date. This release adds Geneve, a protocol which seeks to avoid these problems by providing a framework for tunneling that provide Layer 2 Networks over Layer 3 Networks.
For more information see http://tools.ietf.org/html/draft-gross-geneve-01
Related VMware blog post: Geneve, VXLAN, and Network Virtualization Encapsulations
Code: commit
1.6. Networking performance optimization: transmission queue batching
This release adds support for deferred flushing of transmission SKBs (socket buffers) to the networking driver. Processing the transmission queue is expensive, so some batching shares that cost with other SKBs. This change allows to achieve 10 Gbit/s full TX wirespeed smallest packet size on a single CPU core (14.8 Mpps). Several drivers already have support for this feature: i40e, igb, ixgbe, mlx4, virtio_net, more will follow in next releases.
Recommended LWN article: Bulk network packet transmission
Recommended blog post Unlocked 10Gbps TX wirespeed smallest packet single core
Code: see the blog post link
1.7. Foo-over-UDP support
This release adds the ability to encapsulate any IP protocol over UDP including tunnels (IPIP, GRE, SIT).
The rationale for this funcionality is that network mechanisms, hardware and optimizations for UDP (such as ECMP and RSS) can be leveraged to provide better service. GRE, IPIP, and SIT have been modified with netlink commands to configure use of FOU on transmit. A new "ip fou" has been added in newer releases of ip to make use of this feature. Details on configuration can be found in the merge link.
Recommended LWN link: Foo over UDP
Merge link: merge
1.8. Optional multiqueue SCSI support
Linux 3.13 added a new design for the block layer that allowed to process multiple IO queues in parallel. This feature, however, wasn't transparent, and required modifications in drivers to support it. In this release, support for the multi-queue layer has been added to the SCSI layer (used by ATA and SATA drivers) as an optional configuration option.
Code: commit
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the Linux_3.18-DriversArch page
3. File systems
- F2FS
- ext4
- NFS
Implement NFS v4.2 SEEK operation, allowing to use lseek() call with either the SEEK_HOLE or SEEK_DATA flags set commit, commit
Allow turning off nfsv3 readdir_plus commit
nfsd: add a v4_end_grace file to /proc/fs/nfsd that allows a privileged userland process to end the v4 grace period early commit
lockd: add a /proc/fs/lockd/nlm_end_grace file that will allow a (privileged) userland process to end the NLM grace period early commit
- SMB
- Btrfs
- XFS
- NTFS
Add FIBMAP ioctl support commit
4. Security
Smack: Add a new access (aka permissive) mode commit
ima: provide 'ima_appraise=log' kernel option that allows logging only mode without fixing it, in order to properly analyze the system commit
5. Block
Implement readpages() to optimize sequential reads of /dev block devices commit
SCSI target userspace backend that uses UIO + shared memory ring to dispatch I/O and control commands into user-space commit
dm raid: add discard support for RAID levels 1 and 10 commit and 4, 5 and 6 commit
zram memory size limitation commit
zram: report maximum used memory commit
6. Memory management
memory-hotplug: add /sys/devices/system/memory/memoryX/valid_zones, shows which zone this memory block can be onlined to commit
balloon_compaction: adds three counters into /proc/vmstat: "balloon_inflate", "balloon_deflate" and "balloon_migrate". They accumulate balloon activity. Under option CONFIG_MEMORY_BALLOON commit
slab merge: If new creating slab has similar size and property with existent slab, this feature reuse it rather than creating new one commit
Support compiling out madvise() and fadvise() commit
Support fadvise without CONFIG_MMU commit
Introduce dump_vma commit
NUMA: Memory zones are allocated by the page allocator in either node or zone order. This release defaults node-ordering on 64-bit NUMA, and to zone-ordering on 32-bit commit
Stress test for memory compaction commit
7. Cryptography
Software asynchronous crypto daemon that provides the kernel thread to assist multi-buffer crypto algorithms for submitting jobs and flushing jobs in multi-buffer crypto algorithms commit, commit, commit, commit, commit
KEYS: Implement binary asymmetric key ID handling commit
8. Virtualization
- Xen
9. Tracing & perf
- perf tools
Add +field argument support for --field option commit
Add +field argument support for --sort option commit
Add perf-with-kcore script commit
Add report.queue-size config file option commit
Add support to new style format of kernel PMU event commit
Let a user specify a PMU event without any config terms commit
Let default config be defined for a PMU commit
- top
perf bench futex: Support operations for shared futexes commit
perf kvm stat report: Enable the target.system_wide flag commit
10. Networking
ipv4: implement igmp_qrv sysctl to tune IGMP robustness variable commit
ipv6: add sysctl_mld_qrv to configure how many retransmit of unsolicited Multicast Listener Discovery retransmit should happen. Admins might want to tune this on lossy links commit
ipv6: notify userspace when we added or changed an ipv6 token commit
TCP: Restore RFC5961-compliant behavior for SYN packets commit
TCP: TCP Small Queues and strange attractors. The purpose is to try to keep number of packets in qdisc as small as possible commit
TCP: improve undo on timeout (increases the undo events by 50% on Google servers) commit
TIPC: add name distributor resiliency queue, helps to avoid race conditions in TIPC distributed name table updates commit
UDP: GRO for UDPv6 commit
ip_tunnel: Add GUE support commit
ethtool: adds new ethtool cmd, ETHTOOL_GTUNABLE & ETHTOOL_STUNABLE for getting and setting tunable values commit
pktgen: add flag NO_TIMESTAMP to disable timestamping commit
xfrm: Enable to specify local and remote prefix length thresholds for the policy hash table via a netlink XFRM_MSG_NEWSPDINFO message commit
openvswitch: Add recirc and hash action. commit
openvswitch: Add support for Geneve tunneling. commit
Bluetooth: 6lowpan: Enable multicast support commit
bridge: Add a default_pvid sysfs attribute commit
bridge: Add filtering support for default_pvid commit
- Wireless
- nftables
IPv4 masquerading support commit
IPv6 masquerading support commit
allow to filter from pre-routing and post-routing commit
extend NFT_MSG_DELTABLE to support flushing the ruleset commit
nfnetlink_acct: add filter support to nfacct counter list/reset commit
export rule-set generation ID commit
nft_meta: Add CPU attribute support, allows to match packets with CPU number commit
nft_meta: add pkttype support for ip, ipv6 and inet families of tables. Allows to match packets based on the link layer information commit
nft_meta: add devgroup support in meta expression, lets match device group of a packets incoming or outgoing interface commit
- netfilter
11. Core (various)
Add support for gcc 5 commit
locktorture: Add infrastructure for torturing read locks commit, mutexes commit, rwlocks commit, rwsems commit
kbuild: handle module compression while running 'make modules_install'. commit
Increase the buffer-head per-CPU LRU size commit
sched: Add default-disabled option to BUG() when stack end location is overwritten commit
sched: Improve sysbench performance by fixing spurious active migration commit
prctl: introduce PR_SET_MM_MAP operation to allow checkpoint/restore utilities to restore a process memory properties commit