F2fs flash-friendly filesystem integrated into Linux
Linus Torvalds has integrated code to support the F2fs filesystem into the Linux kernel's main development branch; this branch is currently used to prepare Linux 3.8 (1, 2, 3). Introduced in October, F2fs is a filesystem that was mainly developed by Samsung employees and is specially tailored for storage media that use flash memory chips and a rather simple Flash Translation Layer (FTL) – for example USB flash drives, memory cards (eMMC, SD cards, ...) and the storage media that are included in cameras, tablets and smartphones.
F2fs is a Log-structured File System (LFS). Like Btrfs, such filesystems use Copy-on-Write (COW) – when a file is overwritten, the filesystem will, therefore, store the new data in a different place and delete the reference to the old data. However, unlike Btrfs or Ext4, F2fs fills up storage media sequentially, always saving new data behind the most recently stored data with no regard for fragmentation. Only once it has reached the end of the storage medium will it start again at the beginning and use any newly deallocated areas to store further data.
Similar mechanisms are also used by the Flash Translation Layer of flash storage media – for example, in order to ensure that flash chips are evenly used because they only tolerate a limited number of writes. Some of the approaches used in F2fs aim to ensure harmonious relations between the filesystem and the Flash Translation Layer; F2fs is also designed to avoid various known LFS filesystem issues. Further details on F2fs can be found in the related kernel documentation and in an article on LWN.net; the article was written by Neil Brown, who maintains the kernel's MD software RAID code and mdadm.
The "f2fs-tools" userspace tools for implementing F2fs disks are available at kernel.org. The filesystem is only one of many improvements Linus Torvalds has integrated into the main development branch since the release of Linux 3.7. The "merge window" phase in which Torvalds integrates the majority of a new version's major new features usually lasts two weeks; therefore, the Linux 3.8 merge window will probably close this weekend. Only corrections and minor harmless adjustments will be made to the main development branch after this time; if the kernel developers keep to their usual rhythm, Linux 3.8 should arrive in February.