6305
Comment:
|
17718
|
Deletions are marked like this. | Additions are marked like this. |
Line 9: | Line 9: |
= Prominent features (NOT COMPLETE) = == 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: [http://git.kernel.org/linus/7c37fbda85ceb9be7bdb9d5f53e702efc40cf783 commit] Code: [http://git.kernel.org/linus/e9be9d5e76e34872f0c37d72e25bc27fe9e2c54c commit] == 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] == TCP: DataCenter TCP congestion algorithm == This release adds the DataCenter 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: [http://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: [http://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 10Gbit/s full TX wirespeed smallest packet size on a single CPU core (14.8Mpps). 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 == 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, 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 (firefox) and to faster pipelining of texture data (such as pixel buffer objects in GL or data blobs in CL). Code: [http://git.kernel.org/linus/f72a113a71ab08c4df8a5f80ab2f8a140feb81f6 commit] == eBFP in-kernel universal virtual machine == 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: [http://git.kernel.org/linus/b4fc1a460f3017e958e6a8ea560ea0afd91bf6fe commit] Code: [http://git.kernel.org/linus/99c55f7d47c0dc6fc64729f37bf435abf43f4c60 commit 1], [http://git.kernel.org/linus/db20fd2b01087bdfbe30bce314a198eefedcc42e 2], [http://git.kernel.org/linus/09756af46893c18839062976c3252e93a1beeba7 3], [http://git.kernel.org/linus/0a542a86d73b1577e7d4f55fc95dcffd3fe62643 4], [http://git.kernel.org/linus/51580e798cb61b0fc63fa3aa6c5c975375aa0550 5], [http://git.kernel.org/linus/cbd357008604925355ae7b54a09137dabb81b580 6], [http://git.kernel.org/linus/0246e64d9a5fcd4805198de59b9b5cf1f974eb41 7], [http://git.kernel.org/linus/475fb78fbf48592ce541627c60a7b331060e31f5 8], [http://git.kernel.org/linus/17a5267067f3c372fec9ffb798d6eaba6b5e6a4c 9], [http://git.kernel.org/linus/3c731eba48e1b0650decfc91a839b80f0e05ce8f 10] |
|
Line 14: | Line 80: |
= File Systems = | = File systems = * F2FS * Introduce FITRIM discard support [http://git.kernel.org/linus/4b2fecc84655055a6a1fe9151786992ac04b56ce commit] * Support atomic writes [http://git.kernel.org/linus/88b88a66797159949cec32eaab12b4968f6fae2d commit] * Support large sector size [http://git.kernel.org/linus/55cf9cb63f0e5439f208d78ed944de9a8df65011 commit] * Support volatile operations for transient data [http://git.kernel.org/linus/02a1335f25a386db9afc68f8315162f862aac93f commit] * EXT4 * Support freezing ext2 (nojournal) file systems [http://git.kernel.org/linus/bb0445765866e5b1607af81e2f48ca5a8efbeed8 commit] * Add sysfs entry showing whether the fs contains errors [http://git.kernel.org/linus/52c198c6820f68b6fbe1d83f76e34a82bf736024 commit] |
Line 16: | Line 91: |
* 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] |
Line 18: | Line 93: |
* Add FIBMAP ioctl support [http://git.kernel.org/linus/3f7fc6f2a2ba0f72a09e9f9999c3812fdee8fe70 commit] | * Add FIBMAP ioctl support [https://git.kernel.org/linus/3f7fc6f2a2ba0f72a09e9f9999c3812fdee8fe70 commit] |
Line 21: | Line 96: |
* Smack: Add a new access (aka permissive) mode [http://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 [http://git.kernel.org/linus/2faa6ef3b21152cc05b69a84113625dcee63176f 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 = * dm raid: add discard support for RAID levels 1 and 10 [http://git.kernel.org/linus/75b8e04bbf01bdd5c42a1d8ac54abf757196ce49 commit] and 4, 5 and 6 [http://git.kernel.org/linus/48cf06bc5f508d5f71bc0fd7530daebb12a48428 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 exsitent 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 [http://git.kernel.org/linus/0085d61fe05ec5a3739afb8ffb8a88130402633e commit] |
Line 26: | Line 115: |
* 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] * KEYS: Implement binary asymmetric key ID handling [http://git.kernel.org/linus/7901c1a8effbe5f89673bfc09d6e37b8f334f1a7 commit] |
* 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] |
Line 31: | Line 120: |
* Xen PV SCSI backend driver [http://git.kernel.org/linus/d9d660f6e562a47b4065eeb7e538910b0471b988 commit] * Add Xen PV SCSI frontend driver [http://git.kernel.org/linus/8beb8d4c91d652617dc992de565ec9904361c33e commit] * Remap Xen Identity Mapped RAM [http://git.kernel.org/linus/4fbb67e3c87b806ad54445a1b4a9c6bde2359c98 commit] |
* 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] |
Line 37: | Line 126: |
* ipv4: implement igmp_qrv sysctl to tune igmp robustness variable [http://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 [http://git.kernel.org/linus/2f711939d2ea9dfaecebecd1324d2ec7a7a21f65 commit] * ipv6: notify userspace when we added or changed an ipv6 token [http://git.kernel.org/linus/b2ed64a97430a26a63c6ea91c9b50e639a98dfbc commit] * ipvs: Allow heterogeneous pools [http://git.kernel.org/linus/6cff339bbd5f9eda7a5e8a521f91a88d046e6d0c commit], [http://git.kernel.org/linus/bc18d37f676f76edbb5e0c37def78c704b5fbed0 commit] * bfp: add "load 64-bit immediate" eBPF instruction [http://git.kernel.org/linus/02ab695bb37ee9ad515df0d0790d5977505dd04a 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] * bfp: add "load 64-bit immediate" eBPF instruction [https://git.kernel.org/linus/02ab695bb37ee9ad515df0d0790d5977505dd04a commit] |
Line 43: | Line 132: |
* Support DTPC IE (from Cisco Client eXtensions) [http://git.kernel.org/linus/c8d6591752e96c550cb98b781326d72d8eedcc79 commit] * Add Radio Resource Management support to assoc request [http://git.kernel.org/linus/ commit] * TCP: Restore RFC5961-compliant behavior for SYN packets [http://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 [http://git.kernel.org/linus/9b462d02d6dd671a9ebdc45caed6fe98a53c0ebe commit] * TCP: improve undo on timeout (ncreases the undo events by 50% on Google servers) [http://git.kernel.org/linus/989e04c5bc3ff77d65e1f0d87bf7904dfa30d41c commit] * TIPC: add name distributor resiliency queue, helps to avoid race conditions in TIPC distributed name table updates [http://git.kernel.org/linus/a5325ae5b8bff051933a754db7727fc9823e6414 commit] * UDP: GRO for UDPv6 [http://git.kernel.org/linus/57c67ff4bd92af634f7c91c40eb02a96dd785dda commit] * gue: Receive side for Generic UDP Encapsulation [http://git.kernel.org/linus/37dd0247797b168ad1cc7f5dbec825a1ee66535b commit] * ip_tunnel: Add GUE support [http://git.kernel.org/linus/bc1fc390e1728672b5b343b85185fcc1fe41043b commit] |
* 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] * 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 [http://git.kernel.org/linus/f0db9b073415848709dd59a6394969882f517da9 commit] * pktgen: add flag NO_TIMESTAMP to disable timestamping [http://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 [http://git.kernel.org/linus/880a6fab8f6ba5b5abe59ea68533202ddea1012c commit] * openvswitch: Add recirc and hash action. [http://git.kernel.org/linus/971427f353f3c42c8dcef62e7124440df68eb809 commit] * openvswitch: Add support for Geneve tunneling. [http://git.kernel.org/linus/f5796684069e0c71c65bce6a6d4766114aec1396 commit] * Bluetooth: 6lowpan: Enable multicast support [http://git.kernel.org/linus/156395c9989a76228e0da40e71267a3d4fb07419 commit] |
Line 53: | Line 147: |
* 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] |
* 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 [http://git.kernel.org/linus/71458cfc782eafe4b27656e078d379a34e472adf commit] * locktorture: Add infrastructure for torturing read locks [http://git.kernel.org/linus/4f6332c1dce9c64ef6bf93842067250dd850e482 commit], mutexes [http://git.kernel.org/linus/42ddc75ddd478edac6ad9dc8c63abb4441541af2 commit], rwlocks [http://git.kernel.org/linus/e34191fad8e5d9fe4e76f6d03b5e29e3eae7535a commit], rwsems [http://git.kernel.org/linus/4a3b427f0b27c7e15edfa607524ff012a155337a commit] |
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
1. Prominent features (NOT COMPLETE)
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: [http://git.kernel.org/linus/7c37fbda85ceb9be7bdb9d5f53e702efc40cf783 commit] Code: [http://git.kernel.org/linus/e9be9d5e76e34872f0c37d72e25bc27fe9e2c54c commit]
1.2. 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]
1.3. TCP: DataCenter TCP congestion algorithm
This release adds the DataCenter 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: [http://git.kernel.org/linus/e3118e8359bb7c59555aca60c725106e6d78c5ce commit]
1.4. 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: [http://git.kernel.org/linus/0b5e8b8eeae40bae6ad7c7e91c97c3c0d0e57882 commit]
1.5. 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 10Gbit/s full TX wirespeed smallest packet size on a single CPU core (14.8Mpps). 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
1.6. 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, 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 (firefox) and to faster pipelining of texture data (such as pixel buffer objects in GL or data blobs in CL).
Code: [http://git.kernel.org/linus/f72a113a71ab08c4df8a5f80ab2f8a140feb81f6 commit]
1.7. eBFP in-kernel universal virtual machine
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: [http://git.kernel.org/linus/b4fc1a460f3017e958e6a8ea560ea0afd91bf6fe commit]
Code: [http://git.kernel.org/linus/99c55f7d47c0dc6fc64729f37bf435abf43f4c60 commit 1], [http://git.kernel.org/linus/db20fd2b01087bdfbe30bce314a198eefedcc42e 2], [http://git.kernel.org/linus/09756af46893c18839062976c3252e93a1beeba7 3], [http://git.kernel.org/linus/0a542a86d73b1577e7d4f55fc95dcffd3fe62643 4], [http://git.kernel.org/linus/51580e798cb61b0fc63fa3aa6c5c975375aa0550 5], [http://git.kernel.org/linus/cbd357008604925355ae7b54a09137dabb81b580 6], [http://git.kernel.org/linus/0246e64d9a5fcd4805198de59b9b5cf1f974eb41 7], [http://git.kernel.org/linus/475fb78fbf48592ce541627c60a7b331060e31f5 8], [http://git.kernel.org/linus/17a5267067f3c372fec9ffb798d6eaba6b5e6a4c 9], [http://git.kernel.org/linus/3c731eba48e1b0650decfc91a839b80f0e05ce8f 10]
2. Drivers and architectures
All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_3.18-DriversArch Linux_3.18-DriversArch page]
3. File systems
- F2FS
Introduce FITRIM discard support [http://git.kernel.org/linus/4b2fecc84655055a6a1fe9151786992ac04b56ce commit]
Support atomic writes [http://git.kernel.org/linus/88b88a66797159949cec32eaab12b4968f6fae2d commit]
Support large sector size [http://git.kernel.org/linus/55cf9cb63f0e5439f208d78ed944de9a8df65011 commit]
Support volatile operations for transient data [http://git.kernel.org/linus/02a1335f25a386db9afc68f8315162f862aac93f commit]
- EXT4
Support freezing ext2 (nojournal) file systems [http://git.kernel.org/linus/bb0445765866e5b1607af81e2f48ca5a8efbeed8 commit]
Add sysfs entry showing whether the fs contains errors [http://git.kernel.org/linus/52c198c6820f68b6fbe1d83f76e34a82bf736024 commit]
- XFS
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]
4. Security
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]
5. Block
dm raid: add discard support for RAID levels 1 and 10 [http://git.kernel.org/linus/75b8e04bbf01bdd5c42a1d8ac54abf757196ce49 commit] and 4, 5 and 6 [http://git.kernel.org/linus/48cf06bc5f508d5f71bc0fd7530daebb12a48428 commit]
6. 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 exsitent 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 [http://git.kernel.org/linus/0085d61fe05ec5a3739afb8ffb8a88130402633e commit]
7. 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 [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]
8. 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]
9. Networking
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]
bfp: add "load 64-bit immediate" eBPF instruction [https://git.kernel.org/linus/02ab695bb37ee9ad515df0d0790d5977505dd04a 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]
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 [http://git.kernel.org/linus/f0db9b073415848709dd59a6394969882f517da9 commit]
pktgen: add flag NO_TIMESTAMP to disable timestamping [http://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 [http://git.kernel.org/linus/880a6fab8f6ba5b5abe59ea68533202ddea1012c commit]
openvswitch: Add recirc and hash action. [http://git.kernel.org/linus/971427f353f3c42c8dcef62e7124440df68eb809 commit]
openvswitch: Add support for Geneve tunneling. [http://git.kernel.org/linus/f5796684069e0c71c65bce6a6d4766114aec1396 commit]
Bluetooth: 6lowpan: Enable multicast support [http://git.kernel.org/linus/156395c9989a76228e0da40e71267a3d4fb07419 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]
10. Core (various)
Add support for gcc 5 [http://git.kernel.org/linus/71458cfc782eafe4b27656e078d379a34e472adf commit]
locktorture: Add infrastructure for torturing read locks [http://git.kernel.org/linus/4f6332c1dce9c64ef6bf93842067250dd850e482 commit], mutexes [http://git.kernel.org/linus/42ddc75ddd478edac6ad9dc8c63abb4441541af2 commit], rwlocks [http://git.kernel.org/linus/e34191fad8e5d9fe4e76f6d03b5e29e3eae7535a commit], rwsems [http://git.kernel.org/linus/4a3b427f0b27c7e15edfa607524ff012a155337a commit]