#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 = = Other news sites =