KernelNewbies:

The linux 2.6.27 kernel ([http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.27 full SCM git log]) is neither released nor finished. Its merge window has officially been closed by the [http://marc.info/?l=linux-kernel&m=121730204732684&w=2 2.6.27-rc1 release on July 28th 2008.]

Summary: 2.6.27 adds support for ...

TableOfContents()

1. Important features (the cool stuff)

1.1. UBIFS

UBIFS is a new filesystem designed to work with flash devices, developed by Nokia with help of the University of Szeged. It's important to understand that UBIFS is very different to any traditional filesystem: UBIFS does not work with block based devices, but pure flash based devices, handled by the MTD subsystem in Linux. Hence, UBIFS does not work with what many people considers flash devices like flash-based hard drives, SD cards, USB sticks, etc; because those devices use a block device emulation layer called FTL (Flash Translation Layer) that make they look like traditional block-based storage devices to the outside world. UBIFS instead is designed to work with flash devices that do not have a block device emulation layer and that are handled by the MTD subsystem and present themselves to userspace as MTD devices.

UBIFS works on top of UBI volumes. UBI is a LVM-like layer which was included in [http://kernelnewbies.org/Linux_2_6_22 Linux 2.6.22], which itself works on top of MTD devices. UBIFS offers various advantages to JFFS2: faster and scalable mount times (unlike JFFS2, UBIFS does not have to scan whole media when mounting), tolerance to unclean reboots (UBIFS is a journaling filesystem), write-back (which improves dramatically the performance), and support of on-the-flight compression.

Documentation: UBIFS [http://www.linux-mtd.infradead.org/faq/ubifs.html FAQ], more [http://www.linux-mtd.infradead.org/doc/ubifs.html documentation]

Code: [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1e51764a3c2ac05a23a22b2a95ddee4d9bffb16d (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0d7eff873caaeac84de01a1acdca983d2c7ba3fe (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e56a99d5a42dcb91e622ae7a0289d8fb2ddabffb (commit)]

1.2. Ext4: Delayed Allocation

In this release, Ext4 is adding one of its most important planned features: Delayed allocation, also called [http://en.wikipedia.org/wiki/Allocate-on-flush "Allocate-on-flush"]. It doesn't changes the disk format in any way, but it improves the performance in a wide range of workloads. This is how it works: When an application write()s data to the disk, the data is usually not written inmmediately to the disk, it's cached in RAM for a while. But despite of not being written inmmediately to the disk, the filesystem allocates and the neccesary disk structures for it inmmediately. Delayed allocation consists on not allocating space for that cached data - instead, only the free space counter is updated when write() is called. The on-disk blocks and structures are allocated only when the cached data is finally written to the disk - not when a process writes something (IOW: "delayed allocation"). This approach, used by filesystems such as XFS, btrfs, ZFS, or Reiser 4, improves noticeably the performance on many workloads. It also results in better block allocation decisions, because when allocation decisions are done at write()-time, the block allocator can not know if any other write()s are going to be done.

Code: [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=29a814d2ee0e43c2980f33f91c1311ec06c0aa35 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=64769240bd07f446f83660bb143bb609d8ab4910 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d2a1763791a634e315ec926b62829c1e88842c86 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cd1aac32923a9c8adcc0ae85e33c1ca0c5855838 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dd919b9822c5fd9fd72f95a602440130297c3857 5)]

There's also a new implementation of the default data=ordered journaling mode based in inodes, not in jbd buffer heads. Code: [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c851ed540173736e60d48b53b91a16ea5c903896 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=678aaf481496b01473b778685eca231d6784098b 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=87c89c232c8f7b3820c33c3b9bc803e9358027da 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=772cb7c83ba256a11c7bf99a11bef3858d23767c 4)]

1.3. ftrace, sysprof support,

Ftrace is a very simple function tracer -unrelated to kprobes/SystemTap- which was born in the -rt patches. It uses a compiler feature to insert a small, 5-byte No-Operation instruction to the beginning of every kernel function, which NOP sequence is then dynamically patched into a tracer call when tracing is enabled by the administrator. If it's disabled, the overhead of the instructions is very small and not measurable even in micro-benchmarks. Although ftrace is the function tracer, it also includes an plugin infrastructure that allows for other types of tracing. Some of the tracers that are currently in ftrace include a tracer to trace context switches, the time it takes for a high priority task to run after it was woken up, how long interrupts are disabled, the time spent in preemption off critical sections.

The interface to access ftrace can be found in /debugfs/tracing, which are documented in Documentation/ftrace.txt. There's also a sysprof plugin that can be used with a development version of sysprof - "svn checkout http://svn.gnome.org/svn/sysprof/branches/ftrace-branch sysprof"

Code: [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7c731e0a495e25e79dc1e9e68772a67a55721a65 (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=502825282e6f79c975a644afc124432ec1744de4 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6e766410c4babd37bc7cd5e25009c179781742c8 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=16444a8a40d4c7b4f6de34af0cae1f76a4f6c901 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bc0c38d139ec7fcd5c030aea16b008f3732e42ac 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1b29b01887e6032dcaf818c14999c7a39593b4e7 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=35e8e302e5d6e32675df2fc1dd3a53dfa6630dc1 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=352ad25aa4a189c667cb2af333948d34692a2d27 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=81d68a96a39844853b37f20cc8282d9b65b78ef3 9], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6cd8a4bb2f97527a9ceb30bc77ea4e959c6a95e3 10], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3d0833953e1b98b79ddf491dd49229eef9baeac1 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b0fc494fae96a7089f3651cb451f461c7291244c 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4e491d14f2506b218d678935c25a7027b79178b1 13] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f06c38103ea9dbca27c3f4d77f444ddefb5477cd 14], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f984b51e0779a6dd30feedc41404013ca54e5d05 15)]

2. Subsystems

3. Drivers

4. External Links

If you want to know what is waited before this kernelnewbies summary is completed, you can read

* A wireless 2.6.27 feature-list at [http://wireless.kernel.org/News/kernel-2.6.27 Linux Wireless]


CategoryReleases

KernelNewbies: Linux_2_6_27 (last edited 2008-09-14 20:02:22 by diegocalleja)