[[TableOfContents()]] == Important things (AKA: ''the cool stuff'') == === GFS2 === GFS2 is a clustering filesystem developed mainly by Red Hat (after [http://www.theregister.co.uk/2003/12/18/red_hat_sweetens_q3/ purchasing Sistina] and opening the source code). It's not the first: OCFS2, another clustering filesystem developed by Oracle, was already merged in [http://kernelnewbies.org/Linux_2_6_16 Linux 2.6.16]. Clustering filesystems allow to share a filesystem between several machines with no compromises. GFS includes his own DLM (distributed locking manager) and a userspace API interface for that DLM. Like OCFS2 and like any other filesystem that wants to be merged in the linux kernel, GFS2 developers asked for submission long time ago. They were asked to fix things (even considering that GFS2 had already been developed at Sistina and it was already a stable final product), they submitted it again, they were asked to fix more things, and so on, for a long period of time. Their developers have fixed every thing they were asked to fix. Because of their hard work, GFS2 is now ready to be merged, and everyone is happy. And nobody flames the kernel or GFS2 developers. Amazing, isn't? [http://sources.redhat.com/cluster/ GFS2 project page]; Source code [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=fs/gfs2 for GFS2] and [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=fs/dlm for the DLM] === EXT 4 === === ECRYPTFS === Coming from IBM, ecryptfs aims to bring "enterprise level" file encryption to the masses. "Oh no, another filesystem!". No, Ecryptfs is not a traditional filesystem: it doesn't implements his own disk format. From [http://lwn.net/Articles/156921/ this LWN article]: ''The eCryptfs developers took the stacking approach, meaning that, rather than implement its own platter-level format, eCryptfs sits on top of another filesystem. It is, essentially, a sort of translation layer which makes encrypted file capabilities available. The system administrator can thus create encrypted filesystems on top of whatever filesystem is in use locally, or even over a network-mounted filesystem. [...] Rather than encrypt the filesystem as a whole, eCryptfs deals with each file individually'' (Reading the rest of the [http://lwn.net/Articles/156921 LWN article] is recommended. There's also a [http://www.linuxsymposium.org/2005/linuxsymposium_procv1.pdf Ecryptfs paper from the 2005 Ottawa Symposium] - page 209 and onwards) Is it better to encrypt the whole disk using cryptoloop/dmcrypt, or use ecryptfs? You decide. Ecryptfs avoids the overhead of a fully encrypted filesystem by only encrypting the files you really want to encrypt, and it also allows to encrypt different files in different ways. Ecryptfs tries to make file encryption available in a easy way for the masses. It ''"aims to combine the flexibility of GnuPG encryption with the transparency of a kernel service" [...] "Think of eCryptfs as a sort of 'gnupgfs'"''. If you're interested, you will find the userspace tools and more information available in the [http://ecryptfs.sourceforge.net/ ecryptfs sourceforge site] [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=237fead619984cc48818fe12ee0ceada3f55b012 (Ecryptfs code)] === Libata PATA (Parallel ATA) merge === By "Parallel ATA" we mean all the ATA/IDE controllers and drives that we have been using for years before SATA. Almost from the start, one of the objectives of some kernel hackers was to [http://marc.theaimsgroup.com/?l=linux-kernel&m=115514409104283&w=2 replace the IDE drivers available in drivers/ide] (everything under the "Device drivers -> ATA/ATAPI/MFM/RLL support" configuration menu) with a reimplementation on top of libata (i.e.: the "SATA layer"). Drivers/ide suffers from many ugly and obscure problems, and re-implementing it on top of libata has been much easier than fixing the unfixable drivers/ide mess - most of the porting work has been done by Alan Cox (a consequence of this PATA merge is that libata and all its SATA drivers have also been moved from drivers/scsi (available in the "Device drivers -> SCSI device support -> SCSI low-level drivers" submenu) to drivers/ata (now "Device drivers -> Serial ATA (prod) and Parallel ATA (experimental) drivers"), and all the CONFIG_SCSI_FOOBAR options for the individual SATA drivers have been changed to CONFIG_FOOBAR, so this means you may need to reconfigure your SATA configuration options) This means 2.6.19 may have two drivers for your PATA-base device: The old IDE driver under "Device drivers -> ATA/ATAPI/MFM/RLL support" and an alternative driver under "Device drivers -> Serial ATA (prod) and Parallel ATA (experimental) drivers" (along with the rest of the SATA drivers) What one must you choose? Well, the safe option is using the old driver: The old drivers will continue working just as they did before. There'll be no changes if you continue using the old drivers. What do the new libata-base PATA drivers offer to you? * First of all, because they're libata-based and libata is a well engineered and sane infrastructure, the drivers have much better quality, they're cleaner, they've much better error handling (much better behaviour when one of your drives dies suddenly or finds broken sectors), and they don't have some of the known design issues that the old drivers have (this is why people did all the work to move away from drivers/ide, they didn't do it just for fun) * Because they're newer, there are more bugs. For this release, they're "experimental". If you want to be safe, use the old drivers. * Really. There is a risk that the new drivers won't work for you, or may harm your data (unlikely, but not impossible). If you want to be safe, use the old drivers. * They support some chipsets not supported by drivers/ide. The cleaner design of libata allows for easier driver development and maintenance. In some cases it supports features that the old driver doesn't, for the same reasons. * Some IDE controllers are not supported or they aren't fully supported. Some of them because not all the IDE drivers have been ported to libata, but others because they're old and undocumented or because the libata PATA layer still doesn't support some of their features. There's no support for certain old serialized devices, for prehistoric CMD640 controllers or for host-protected-area yet. * Drives appear as /dev/sda, /dev/sr0, the old devices names won't work. You will need to change your boot parameters and your /etc/fstab parameters in order to get a working system with the new drivers. Again, this only happens if you use the new drivers, the old drivers continue working as they did before. Eventually, the new libata-based PATA drivers will get more stable, so the old drivers in drivers/ide may get deleted as the new drivers fulfill all needs of the IDE users and becomes feature-complete. But this certainly won't happen anytime soon. No old drivers will be deleted if there's not a working libata-based replacement. You can read the latest [http://zeniv.linux.org.uk/~alan/IDE/STATUS.txt status report] written by Alan Cox. It'd certainly be useful if you could give it a try and report back how well it works to linux-kernel@vger.kernel.org or bugzilla.kernel.org - even if it works fine, it'll be useful to know what systems do work (be sure to include the necessary information mentioned in the previous status report). [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/ata (libata PATA code)] === Removal of selected OSS drivers === Since 2.6 was released, ALSA has been the "official" sound subsystem. OSS drivers were kept for compatibility - ALSA also implements a OSS compatibility layer. However, there's a big number of ALSA drivers and OSS drivers targetting exactly the same hardware. Usually, the OSS ones are undermaintained (or no maintained at all). And ALSA already implements OSS compatibility. So.... ...it's possible to remove old OSS drivers, as long as there's a equivalent ALSA driver, and as long as that driver has no regressions that don't allow users to migrate (drivers with no ALSA equivalent or with know regressions have NOT been deleted). In 2.6.19, those OSS drivers are being removed. If when migrating users find something wrong in the ALSA drivers, they should report it in the [https://bugtrack.alsa-project.org ALSA bug tracking system] and work with developers to fix them. Yes, we know there're users that feel just fine with the OSS drivers, but it doesn't helps to the kernel to keep those old drivers around. By forcing people to migrate to ALSA drivers, the ALSA drivers will be improved and fixed. Overall, the linux sound subsystem will only get better. Many thanks to all the hackers that coded them. A total of 1.79 MB of OSS drivers will be removed. To see a list of source files being removed, see [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d56b9b9c464a10ab1ee51a4c6190a2b57b8ef7a6 the commit link]. Hardware that is forced to use ALSA drivers include: * AD1980 AC97 plugin * ALI 5455 * Alchemy Au1000 (MIPS) * AWE32/SB32/AWE64 WaveTable driver * C-Media * Cirrus Logic-Crystal CS4281 * Ensoniq ES1370/Asahi Kasei AK4531 * ESS Technology Solo1 (ES1946) * ForteMedia FM801 * Gravis Ultrasound * ASP's and Lasi's Harmony sound chip * ICS2101 mixer of GUS v3.7 * OPTi MAD16 compatible audio chips * ESS Maestro/Maestro-2/Maestro-2E/Maestro3/Allegro * Turtle Beach Maui and Tropez * Yamaha YMF701B aka OPL3-SA * RME9652/36 "Hammerfall" Driver * Aztech Sound Galaxy cards * S3 Sonic Vibes * Turtle Beach WaveFront Series (Maui, Tropez, Tropez Plus) * WaveFront ICS2115 MIDI * Yamaha YMF7xx == Other stuff == === Architecture-specific changes === ==== x86 32/64 ==== ==== PPC ==== * PA Semi PWRficient platform support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1e76875e51266a5c43f601ecf08a92be5769228c (commit)] * Cpufreq support for Xserve G5 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7ed14c2177694ce086180eb9ca9ca4c6cd72c7ef (commit)] * Add support for briq machines [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=26c5032eaa64090b2a01973b0c6ea9e7f6a80fa7 (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a45b83957deabbdac9a3d908c6ca4c25f05ce1ad (commit)] * Emulate power5 popcntb instruction on non-power5 machines [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c3412dcb75ff4d64b44bedc72761d5707d19edf7 (commit)] * A new iSeries console [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8bff05b052db7a4cfaaf0eee7f8145600548e9c9 (commit)] * Cell interrupt rework [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2e194583125bfea94d1ceaa6a32e891643befa7d (commit)], add NUMA support to the the spufs scheduler [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a68cf983f635930ea35f9e96b27d96598550dea0 (commit)], add infrastructure needed for gang scheduling [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6263203ed6e9ff107129a1ebe613290b342a4465 (commit)] * Add MPC8360EMDS board support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bc141deafb81f2efa453081e9d52d602a8cec766 (commit)], add initial support for the Freescale e300c2 core found in the MPC832x processor line [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6c4a2501d0b9fe90882efea5541275a46cda2a1a (commit)], add support for the mpc832x mds board [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9020fc960b8f5fbca0de6e4d11881ddc827aa61d (commit)] * Enable XMON on PPC 4xx boards [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b7e89214aadf82fa5eaff28f50f2078fa6ae773c (commit)] * Direct yield of spinlocks for powerpc [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cdc39363d33506b0e067d41fc91f89d186bdf7f7 (commit)] ==== S390 ==== * Add kprobes support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4ba069b802c29eee066385f9826e2d83716626b4 (commit)] * Remove old z90crypt driver [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7561b974e0cbbdca1bb880b55200afd9a1a20737 (commit)], replace it with the shiny new zcrypt device driver [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fe3a1be59c851aba2330387596c6134bc5ec8397 (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2dbc2418bac32a18a372ae9aec386f0fe9174389 (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1534c3820c26aca4e2567f97b8add8bea40e7e2b (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=963ed931c3fd18082bfde0e8704a28955663abf4 (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6684af1a07a1f88f3970bc90e5aed173d39168db (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5432114baf0300286a6ca1b0aea549492a379432 (commit)] * Kernel stack overflow handling [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9514e2311be97a01e8669c4de78e9fea37489f09 (commit)] * Linux API for writing z/VM APPLDATA Monitor records collected by the *MONITOR System Service of z/VM [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=31b58088292c7f00f0b81088bfb557285b0b6247 (commit)] * Direct yield of spinlocks for s390 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3c1fcfe229e99752c74efb945a4a3f560be04204 (commit)] ==== PARISC ==== * Allow nested interrupts [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7085689ed135f94108e46c372015c6f5cd3372a3 (commit)], allow overriding personality with sys_personality to allow running linux 32 bits userspace [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=75a4958154f5d0028d5464f2479b4297d55cf4a3 (commit)]; add support for Quicksilver AGPGART [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=08a6436816f7a16113c73be767ee8d50440e494e (commit)] === Filesystems === ==== OCFS2 ==== * Add ext2 attributes - immutable, sync, append, noatime, dirsync - [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ca4d147e62df370c334898464023aa7f9126abe1 (commit)]; implement directory read-ahead [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=aa9588741db907785e4d92c8b768dd6c9077e6f0 (commit)] ==== CIFS ==== * Legacy time handling for Win9x and OS/2 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1bd5bbcb6531776a8f73e2cc6287fc4dd542e1c7 (commit)]; support deep tree mounts (e.g. mounts to //server/share/path) [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2fe87f02a04ad6e7075023a87fe38eb458a4bb9d (commit)] === SELinux === === Networking === === Drivers and other subsystems === ==== Video ==== ==== Input devices ==== * Implement a new Force Feedback interface for drivers (userspace interface is untouched) [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=509ca1a9383601fdc5612d3d3ba5b981f6eb6c8b (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7d928a2b14eede1f333db7b7b684c57f7fa7f456 (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f6a01c85965c9e6fa8fb893c1fa5db16130d0ccb (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ff462551235d8d7d843a005950bc90924fcedede (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dc76c912145febae8b62746d6f93e5edae342c9d (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bb3caf7f438a67452f5cf4773ca1bf82260bbbad (commit)], [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=224ee88fe39564358ec99b46bf3ee6e6999ae17d (commit)] * Add driver for Touchwin serial touchscreens [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=11ea3173d5f2de71d037ef58ac43395795fed2bc (commit)], another for Penmount serial touchscreens [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ee4799997950e81437ef9055a4b104099e3272c4 (commit)], another for Touchright serial touchscreens [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4003dff41e65ad338a60dde90019bffcb5531fb6 (commit)], another driver for stowaway serial keyboards [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f35d0616bddf4efdfaedc5dfad2267202a3c739f (commit)]; and add support for non-pressure-sensitive touchscreens in elo driver [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fae3006e4b42eafbed4af714e93cf6c2b92ff793 (commit)], add support for Acer TravelMate 2424NWXCi in wistron driver [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bb0885900de49b5822d7e8c91c1adf9a0fcc228b (commit)], and add support Microsoft Natural Elite Pro keyboards [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9807879bfdc0c2b5106b4b378f5475c6a333d853 (commit)] ==== Sound ==== * HDA updates * MSI support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7376d013fc6d3a45d748e0ce758ca9412b01b9dd (commit)] * Add model entry for Samsung X10 laptop [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0a197f005a27766f5c9e0d960e7650748ec1ee4f (commit)], for Clevo m665n laptop [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a053d012d0576e9306009939ca81a86547ef35a (commit)], support sigmatel 9205 family [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f3302a59cf6961712658db63b66ea5902c17d5e1 (commit)], add model for ASUS M2NPV-VM mobo [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=827a56ea3d9c3d5f80c5520ba9d487f9b7069238 (commit)], add support of Benq laptop with ALC262 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=304dcaac91f0d26543b31fd7e63726f096c826ee (commit)], add support for Sony Vaio AR 11B [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=99ccc560b73ff7381153dc1391d18391373931d3 (commit)], add hp-bpc model type for HP laptops [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6d177ba7839dd7ed391c2f36b121eb09d1eaee4c (commit)], add model for Uniwill laptop with ALC861 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=22309c3e0c8911865cad0aa94f53a9afadaad7ee (commit)], add support for LG LW25 laptop [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=cd417d4fe89638a2848980cb389b9781d4913173 (commit)], support for SigmaTel 9872 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6d8590650eb81d2c869c7adf4b469071cec11eee (commit)], add 5 stack audio support for Intel 965 systems [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=93ed150375187ae7917ed1e3b9b830b9d4065bad (commit)], new pci id for Nvidia MCP61 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f3838ba9204cd8af83c4358379221af66d77714e (commit)], add model entry for ASUS U5F laptop: Added a model entry for ASUS U5F laptop with AD1986A codec [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=264e6e3b0c5af44d8975153bf0c88ccf2cb10a2f (commit)], add ATI RS690 HDMI audio support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5b15c95f889c7bc43cb759c27211c597c0ad9f05 (commit)], * Add snd-mts64 driver for ESI Miditerminal 4140 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=68ab801e32bbe2caac8b8c6e6e94f41fe7d687ad (commit)], and add experimental support of aggressive AC97 power-saving mode (CONFIG_SND_AC97_POWER_SAVE)- it can be turned on/off on the fly via sysfs, too [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6dbe662874ba08585eaf732d126762c25ac8e3f7 (commit)] ==== libata/IDE ==== * Besides the libata/PATA changes already mentioned above, there're more changes in libata and in the old IDE subsystem: Increase lba48 max-sectors from 200 to 256 [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8b881b0410de0f72a43e814393abf3a4cb29ebb4 (commit)], add support for SATA attachment to SAS adapters [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=80289167fd3ebaeb7b2641e69cbec44b61165fe7 (commit)], implement Power Management support in ahci [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c1332875cbe0c148c7f200d4f9b36b64e34d9872 (commit)], add SATA support for vt8237a in sata_via [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=08be09b7c38a71b1677285c10a08725833ff9b95 (commit)], add CompactFlash support [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b352e57dc3bb5033996adaa67c2f69b795eddd39 (commit)] * A non-libata driver for Jmicron devices [http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bbb3bbdb0f78cb02451daf5687a99627f7ad1140 (commit)] ==== V4L/DVB ==== ==== Network drivers ==== ==== Various drivers ====