# Btrfs Updates in Linux 3.7 Kernel

The Linux 3.7 Kernel has been released on 10 December.

The version number has advanced so fast since 3.0 which was never seen in the 2.4.x and 2.6.x era, is it playing catch-up with Chrome? LOL

### Summary

This Linux release includes support for the ARM 64 bit architecture, ARM support to boot into different systems using the same kernel, signed kernel modules, Btrfs support for disabling copy-on-write on a per-file basis using chattr and faster fsync(), a new “perf trace” tool modeled after strace, support for the TCP Fast Open feature in the server side, experimental SMBv2 protocol support, stable NFS 4.1 and parallel NFS support, a new tunneling protocol that allows to transfer Layer 2 ethernet packets over UDP, and support for the Intel “supervisor mode access prevention” security feature. Many small features and new drivers and fixes are also available.

• fsync() speedups: The fsync() syscall writes the modified data of a file to the hard disk. The performance of fsync() is important for software like dpkg/rpm, Firefox, qemu, etc. Btrfs fsync() performance has been quite bad, but in this release fsync can be several times faster. Code: (commit 1, 2)
• Hole punching: “Hole punching” is the ability to deallocate a range of space in a file (using the fallocate() syscall with the FALLOC_FL_PUNCH_HOLE mode). Btrfs now supports this feature. Code: (commit)
• chattr per-file NOCOW support: Btrfs can disable copy-on-write for file data using the nodatacow mount option. In this version it also has added support for disabling copy-on-write for file data in a per-file basis using the chattr +C file (needs a recent e2fsprogs). Copy-on-write does not fit all workloads, and some applications want to disable it to get better fragmentation and performance behaviour. Code: (commit)
• Note 1*: in order to disable copy-on-write you need to use chattr in a empty file, it won’t work in a file that already has data (in that case, you can create a temporary file, disable COW, copy the data, and rename the file).
• Note 3*: it is possible to use chattr +C on a directory, and the new files created after issuing the command will get disabled COW support.