#pragma section-numbers on #pragma keywords Linux, kernel, operating system, changes, changelog, file system, Linus Torvalds, open source, device drivers #pragma description Summary of the changes and new features merged in the Linux kernel during the 4.4 development cycle Summary: Linux 4.4 has not been released = Prominent features = = Drivers and architectures = All the driver and architecture-specific changes can be found in the [http://kernelnewbies.org/Linux_4.4-DriversArch Linux_4.4-DriversArch] page = Core (various) = = File systems = * XFS * Add per-filesystem stats in ''/sys/fs/xfs//stats/stats'', and a ''stats_clear'' file to clear them. Also, the global stats that are currently present in ''/proc'' are duplicated in ''/sys/fs/xfs/stats/stats'' (along with a ''stats_clear'' file) [https://git.kernel.org/torvalds/c/bb230c124730f21eea13deab433f9f8fc96bd5f3 commit], [https://git.kernel.org/torvalds/c/225e4635580ce9fb12f8a2dc88473161cd64dbf6 commit], [https://git.kernel.org/torvalds/c/ff6d6af2351caea7db681f4539d0d893e400557a commit] * CIFS * Allow duplicate extents (''cp --reflink'') in SMB3.0 not just SMB3.1.1 [https://git.kernel.org/torvalds/c/ca9e7a1c85594f61d7ffb414071e6cae82eae23a commit] * Add resilienthandles mount parameter. Since many servers (Windows clients, and non-clustered servers) do not support persistent handles but do support resilient handles, allow the user to specify a mount option "resilienthandles" in order to get more reliable connections and less chance of data loss (at least when SMB2.1 or later). Default resilient handle timeout (120 seconds to recent Windows server) is used [https://git.kernel.org/torvalds/c/592fafe644bf3a48b9e00e182a67d301493634fc commit] * Add support for persistent handles, which are like durable file handles with strong guarantees [https://git.kernel.org/torvalds/c/b2a3077414fd6ff1de8972ea55e91f27bcabd913 commit], [https://git.kernel.org/torvalds/c/f16dfa7cd1b588e5d7ef4b5a19ee579f11b7a41f commit], [https://git.kernel.org/torvalds/c/b618f001a20e44f691dd0e2ffea651a40a651871 commit] * Allow copy offload (copychunk) across shares [https://git.kernel.org/torvalds/c/7b52e2793a58af61b5d349c2c080437a437a4edb commit] = Memory management = = Block layer = * Add Persistent Reservations support. It includes a user space interface for simplified Persistent Reservations which map to block devices that support these (only SCSI for now). Persistent Reservations allow restricting access to block devices to specific initiators in a shared storage setup [https://git.kernel.org/torvalds/c/bbd3e064362e5057cc4799ba2e4d68c7593e490b commit], [https://git.kernel.org/torvalds/c/924d55b06347d813b38c51e75ce1a6666c113933 commit], [https://git.kernel.org/torvalds/c/71cdb6978a80f9f6c51bef0622388c1414c2fe32 commit] * Add support for polling for specific IO to complete. This will be combined with request latency tracking later, so that the kernel can make qualified decisions about when to poll and when not to. For now, for benchmark purposes, a sysfs file (''io_poll'') is added to control whether polling is enabled or not [https://git.kernel.org/torvalds/c/05229beeddf7e75e2e616ddaad4b70e7fca9528d commit] * Export integrity data interval size in ''/sys/block//integrity/protection_interval_bytes'', so that apps can tell whether the interval is different from the device's logical block size [https://git.kernel.org/torvalds/c/4c241d08dbfcbdc7a949b91d72707a289d464954 commit] = Cryptography = = Security = = Tracing and perf tool = * Integration of perf with eBPF that, given an eBPF .c source file (or .o file built for the 'bpf' target with clang), will get it automatically built, validated and loaded into the kernel via the sys_bpf syscall, which can then be used and seen using 'perf trace' and other tools. Users can run commands like ''perf record --event bpf-file.c ls'' to try it [https://git.kernel.org/torvalds/c/69d262a93a25cf475012ea2e00aeb29f4932c028 commit], [https://git.kernel.org/torvalds/c/84c86ca12b2189df751eed7b2d67cb63bc8feda5 commit], [https://git.kernel.org/torvalds/c/ed63f34c026e9a60d17fa750ecdfe3f600d49393 commit], [https://git.kernel.org/torvalds/c/1f45b1d49073541947193bd7dac9e904142576aa commit], [https://git.kernel.org/torvalds/c/4edf30e39e6cff32390eaff6a1508969b3cd967b commit], [https://git.kernel.org/torvalds/c/71dc2326252ff1bcdddc05db03c0f831d16c9447 commit], [https://git.kernel.org/torvalds/c/d509db0473e40134286271b1d1adadccf42ac467 commit], [https://git.kernel.org/torvalds/c/aa3abf30bb28addcf593578d37447d42e3f65fc3 commit], [https://git.kernel.org/torvalds/c/1e5e3ee8ff3877db6943032b54a6ac21c095affd commit], [https://git.kernel.org/torvalds/c/ba1fae431e74bb427a699187434142fd3fe98390 commit] * Add a new branch type sampling filter to perf record, named 'call' (''perf record -j call -e cycles .....''), that samples only call branches (function calls), unlike 'any_call' that included direct, indirect calls and far jumps. Only x86 and PowerPC are supported in this release [https://git.kernel.org/torvalds/c/43e41adc9e8c36545888d78fed2ef8d102a938dc commit], [https://git.kernel.org/torvalds/c/c229bf9dc179d2023e185c0f705bdf68484c1e73 commit] * Add Intel cstate (aka idle states) Performance Monitoring Unit support. This allows perf to support cstate related free running (read-only and system-wide) counters. For example, to caculate the fraction of time when the core is running in C6 state: '' perf stat -x, -e"cstate_core/c6-residency/,msr/tsc/" -C0 -- taskset -c 0 sleep 5 '' [https://git.kernel.org/torvalds/c/7ce1346a6842550a3c4c453cdf1c7b81fb60b07e commit] * CPU socket filtering: perf tools introduce a new sort type "socket" for the processor socket, eg. ''perf report --stdio --sort socket,comm,dso,symbol'' [https://git.kernel.org/torvalds/c/2e7ea3ab8282f6bb1d211d8af760a734c055f493 commit]. Also, perf report introduces a --socket-filter option for 'perf report' to only show entries for a processor socket that match this filter [https://git.kernel.org/torvalds/c/21394d948a0c7c451d4a4d68afed9a06c4969636 commit]. perf hists browser can zoom in/out for processor socket [https://git.kernel.org/torvalds/c/84734b06b63093cd44533f4caa43d4452fb11ec3 commit] * perf tools: Introduce 'P' modifier, it will cause the event to get maximum possible detected precise level. For example, ''perf record -e cycles:P ...'' will detect maximum precise level for 'cycles' event and use it [https://git.kernel.org/torvalds/c/7f94af7a489fada17d28cc60e8f4409ce216bd6d commit] * perf tools: Add support for sorting on the iaddr. New sort option is: symbol_iaddr, header label is 'Code Symbol', eg ''perf mem report --stdio -F +symbol_iaddr'' [https://git.kernel.org/torvalds/c/28e6db205b3ed3f1d86a00c69b3304190377da5f commit] * perf tools: enables config terms for tracepoint perf events. Valid terms for tracepoint events are 'call-graph' and 'stack-size', so different callgraph settings can be used for each event and eliminate unnecessary overhead. An example for using different call-graph config for each tracepoint: ''perf record -e syscalls:sys_enter_write/call-graph=fp -e syscalls:sys_exit_write/call-graph=no dd if=/dev/zero of=test bs=4k count=10'' [https://git.kernel.org/torvalds/c/e637d17757a10732fa5d573c18f20b3cd4d31245 commit] * perf script: Enable printing of branch stack viaa the 'brstack' and 'brstacksym' arguments to the field selection option -F. The option is off by default and operates only if the perf.data file has branch stack content [https://git.kernel.org/torvalds/c/dc323ce8e72d6d1beb9af9bbd29c4d55ce3d7fb0 commit] * perf auxtrace: Add AUX area tracing option 'l' to synthesize branch stacks on samples just like sample type PERF_SAMPLE_BRANCH_STACK [https://git.kernel.org/torvalds/c/601897b54c7ed492a89b262dccd7c6f7faf12b30 commit] * perf hists browser: Add 'm' key for context menu display [https://git.kernel.org/torvalds/c/31eb4360546b4bd890f349db01295a173c09b0fb commit] * perf inject: Add --strip option which is used with --itrace to strip out non-synthesized events [https://git.kernel.org/torvalds/c/f56fb9864c501dc85ebe40af5bf925dd07d990c0 commit] * perf script: Allow time to be displayed in nanoseconds [https://git.kernel.org/torvalds/c/83e1986032dfcd3f9e9fc0d06e11d9153edae19b commit] * Intel PT hardware tracer: Accept a zero ''--itrace'' period, meaning "as often as possible". In the case of Intel PT that is the same as a period of 1 and a unit of 'instructions' (i.e. --itrace=i1i)[https://git.kernel.org/torvalds/c/e1791347b5d57d13326cf0114df1a3f3b1c4ca24 commit] * Intel PT: Add support for generating branch stack context for PT samples. This is useful for: reporting accurate basic block edge frequencies through the perf report branch view or using with --branch-history to get the wider context of samples. Examples, record with Intel PT: ''perf record -e intel_pt//u ls'' = Networking = * [http://kb.linuxvirtualserver.org/wiki/IPVS IP Virtual Server] * Support scheduling of ICMP packets to IPVS instances. A new sysctl ''net.ipv4.vs.schedule_icmp'' has been introduced, that will enable this feature if set to 1 (by default, it is set by default to 0 to retain the old behaviour) [https://git.kernel.org/torvalds/c/99cb99aa055a72d3880d8a95a71034c4d64bcf9a merge commit] * Allow to ignore tunnelled packets with new Sysctl ''net.ipv4.vs.ignore_tunneled''. If set, ipvs will set the ipvs_property on all packets which are of unrecognised protocols. This prevents the kernel from routing tunnelled protocols like ipip, which is useful to prevent rescheduling packets that have been tunneled to the ipvs host (i.e. to prevent ipvs routing loops when ipvs is also acting as a real server) [https://git.kernel.org/torvalds/c/4e478098ac0ac1b6ef9a70fcdc2ec8b93f1b59a1 commit] * Provide FIB table ID in ipv4 route dumps just as ipv6 does [https://git.kernel.org/torvalds/c/b7503e0cdb5dbec5d201aa69d8888c14679b5ae8 commit] * Allow the user to ask for the statistics to be filtered out of ipv4/ipv6 address netlink dumps, because many commonly used functions like getifaddrs() invoke RTM_GETLINK to dump the interface information, and do not need the AF_INET6 statistics, which are expensive to calculate [https://git.kernel.org/torvalds/c/d5566fd72ec1924958fcfd48b65c022c8f7eae64 commit] * wireless: implement Very High Throughput support for mesh networks [https://git.kernel.org/torvalds/c/c85fb53c4fa6521352028c40ce096a808aabd389 commit] * bridge: Allow setting the bridge attribute ''ageing_time'' in rocker and switchdev [https://git.kernel.org/torvalds/c/c62987bbd8a1a1664f99e89e3959339350a6131e commit], [https://git.kernel.org/torvalds/c/d0cf57f9dddb50ea404bf747a3c6b22b29f82b9a commit], [https://git.kernel.org/torvalds/c/f55ac58ae64cbb0315382e738681fe31837dcac0 commit] * vxlan: support both IPv4 and IPv6 sockets in a single vxlan device [https://git.kernel.org/torvalds/c/b1be00a6c39fda2ec380e168d7bcf96fb8c9da42 commit] * bridge: complete the bridge device's netlink support and makes it possible to view and configure everything that can be configured via sysfs [3e087caa23ef36370bfb925d3bbca78e8302d3ce commit] * IPv4: Hash-based multipath routing. When the routing cache was [http://kernelnewbies.org/Linux_3.6#head-85de5e5247a939f2a61d0c5ccbc13ff5b4f1a6a0 removed in 3.6], the IPv4 multipath algorithm changed from more or less being destination-based into being quasi-random per-packet scheduling. This increased the risk of out-of-order packets and made it impossible to use multipath together with anycast services. In this release, the multipath routing implementation is replaced with a flow-based load balancing based on a hash over the source and destination addresses [https://git.kernel.org/torvalds/c/07355737a8badd951e6b72aa8609a2d6eed0a7e7 merge commit] * IPv6 support to the Virtual Routing and Forwarding (VRF) devices [https://git.kernel.org/torvalds/c/ccf3c8c3fe1bd4828556650ae7928da6ffb4aaf6 commit], [https://git.kernel.org/torvalds/c/35402e31366349a32b505afdfe856aeeb8d939a0 commit], [https://git.kernel.org/torvalds/c/ca254490c8dfdaddb5df8a763774db0f4c5200c3 commit] * TCP: Recent ACK (RACK) loss recovery. RACK loss recovery uses the notion of time instead of packet sequence (FACK) or counts (dupthresh) (see commit for details). In the current patch set RACK is only a supplemental loss detection and does not trigger fast recovery. However RACK is being developed to replace or consolidate FACK/dupthresh, early retransmit, and thin-dupack. Since RACK is still experimental, it is now used as a supplemental loss detection on top of existing algorithms. It can be disabled with sysctl ''net.ipv4.tcp_recovery'' [https://git.kernel.org/linus/eb9fae328faff9807a4ab5c1834b19f34dd155d4 commit] '' TODO '' * mpls: flow-based multipath selection [https://git.kernel.org/torvalds/c/1c78efa8319cad2f10f421afa627745fb4d9b29f commit] * mpls: multipath route support [https://git.kernel.org/torvalds/c/f8efb73c97e2fa0abbe2e07c5c5df07800312643 commit] * bridge: allow adding of fdb entries pointing to the bridge device [https://git.kernel.org/torvalds/c/3741873b4f73b572b8f8835e6bd114e08316a160 commit] * net: Add support for filtering neigh dump by device index [https://git.kernel.org/torvalds/c/16660f0bd942cec203eaf4de0e2ac1695bd9d32d commit] * net: Add support for filtering neigh dump by master device [https://git.kernel.org/torvalds/c/21fdd092acc7ebda0dfe682008592eb79c382707 commit] * net/core: generic support for disabling netdev features down stack [https://git.kernel.org/torvalds/c/fd867d51f889aec11cca235ebb008578780d052d commit] * net/ethoc: support big-endian register layout [https://git.kernel.org/torvalds/c/06e60e5912c0373b15143cc52e4a11fafeaafff3 commit] * net/wireless: enable wiphy device to suspend/resume asynchronously [https://git.kernel.org/torvalds/c/9f0e13546ef5773b7059b531a667ec47a5f897ee commit] * net: Introduce L3 Master device abstraction [https://git.kernel.org/torvalds/c/1b69c6d0ae90b7f1a4f61d5c8209d5cb7a55f849 commit] * net: dummy: add more features [https://git.kernel.org/torvalds/c/8f3af27786913851e720bc9466d1abffcfa7aff6 commit] * net: tso: add support for IPv6 [https://git.kernel.org/torvalds/c/8941faa161b526199e55ca7764cf875383453612 commit] * netfilter: nfnetlink_log: allow to attach conntrack [https://git.kernel.org/torvalds/c/a29a9a585b2840a205f085a34dfd65c75e86f7c3 commit] * nl80211: put current TX power in interface info [https://git.kernel.org/torvalds/c/d55d0d598e6610bbfcc1f2ecd6e8af669b94783b commit] * nl80211: support vendor dumpit commands [https://git.kernel.org/torvalds/c/7bdbe400d1b2aac116513f90b75969ad2365fba6 commit] * nl802154: add support for security layer [https://git.kernel.org/torvalds/c/a26c5fd7622d4951425131d54a8c99f076fe2068 commit] * ipconfig: send Client-identifier in DHCP requests [https://git.kernel.org/torvalds/c/26fb342c734061859fec1bd9e987bb6b78061ef0 commit] * ipv4: implement support for NOPREFIXROUTE ifa flag for ipv4 address [https://git.kernel.org/torvalds/c/7b1311807f3d3eb8bef3ccc53127838b3bea3771 commit] * ipv6: gro: support sit protocol [https://git.kernel.org/torvalds/c/feec0cb3f20b837f8ca36e974267918d7a4497f8 commit] * ieee802154: 6lowpan: add tx/rx stats [https://git.kernel.org/torvalds/c/1c64f147d3cc9bbafe091a7b335ea3ec700186f0 commit] * if_link: Add control trust VF [https://git.kernel.org/torvalds/c/dd461d6aa894761fe67c30ddf81eec0d08be216b commit] * IB/addr: Pass network namespace as a parameter [https://git.kernel.org/torvalds/c/565edd1d555513ab5d67a847d50d7c14c82ef6c3 commit] * IB/cma: Add support for network namespaces [https://git.kernel.org/torvalds/c/fa20105e09e97e81aadf02f722c31195e4a75c84 commit] * IB/cma: Separate port allocation to network namespaces [https://git.kernel.org/torvalds/c/4be74b42a6d05a74a21362010cd3920fa17f63c7 commit] * IB/core: Add support of checksum capability reporting for RC and RAW [https://git.kernel.org/torvalds/c/470a55358186d0bb93558a87d13159dfbc989351 commit] * bpf, seccomp: prepare for upcoming criu support [https://git.kernel.org/torvalds/c/bab18991871545dfbd10c931eb0fe8f7637156a9 commit] * bpf: add support for persistent maps/progs [https://git.kernel.org/torvalds/c/b2197755b2633e164a439682fb05a9b5ea48f706 commit] * cfg80211: allow changing station capabilities for unassociated stations [https://git.kernel.org/torvalds/c/47edb11b522561658fe719e56aa69a3c3098a3fe commit] * cfg80211: reg: make CRDA support optional [https://git.kernel.org/torvalds/c/b68630369167a7fd2c4c3d1be96430defc59fb9a commit] * mac80211: advertise support for full station state in AP mode [https://git.kernel.org/torvalds/c/44674d9c2267f454f38df7b2395939bfa911f92e commit] * mac80211: allow the driver to advertise A-MSDU within A-MPDU Rx support [https://git.kernel.org/torvalds/c/99e7ca44bb910f0cbfda5d9008e8517df0ebc939 commit] * mac80211: allow to transmit A-MSDU within A-MPDU [https://git.kernel.org/torvalds/c/e3abc8ff0fc18b3925fd5d5c5fbd1613856f4e7c commit] * openvswitch: netlink attributes for IPv6 tunneling [https://git.kernel.org/torvalds/c/6b26ba3a7d952e611dcde1f3f77ce63bcc70540a commit] * switchdev: Add support for flood control [https://git.kernel.org/torvalds/c/741af0053b43d8b9a688a12c57ece62338616ae8 commit] * switchdev: Make flood to CPU optional [https://git.kernel.org/torvalds/c/371e59adcebf9953385bf46d5325ac39a53c5520 commit] * tipc: introduce capability bit for broadcast synchronization [https://git.kernel.org/torvalds/c/fd556f209af53b9cdc45df8c467feb235376c4df commit] * tipc: introduce jumbo frame support for broadcast [https://git.kernel.org/torvalds/c/959e1781aa230aecc90e4deb80117fd9a53dede7 commit] = Other news sites =