The kernel column #96 with Jon Masters – 2010 in review
2010 was another exciting year for the Linux kernel and its community. Over the course of four kernel releases and many tens of thousands of mailing list messages, over one thousand individual developers (some working alone, some working for corporations) contributed two new architectures, several new file systems, and drivers for key hardware in the form of the Nouveau Nvidia driver (produced independently of Nvidia) and an open source Broadcom driver for its recent Wi-Fi chips. Of course, many more features were added, too…
Along the way, we also had two huge flame wars, several major security holes (one of which had been around for many years) were fixed, and many regressions were tracked and squashed. But if the year had to be summarised in a word, that word would be scalability. 2010 saw work on almost every aspect of the kernel – from Nick Piggin’s VFS (virtual file system) scalability patches to Arnd Bergmann’s BKL (Big Kernel Lock) removal work, and countless other efforts in between. You will see that recurring theme in the following month-by-month summary. If you’d like to see some more figures to accompany this timeline, visit the Linux Foundation website (linuxfoundation.org). Their annual kernel report focuses on overall numbers, not on individual features as we do here.
The year began with the rc3 release of kernel 2.6.33. This was the first kernel since the major Enterprise Linux vendors had chosen to base their next products on 2.6.32. New patches posted for discussion (but not necessarily merging into the kernel) included Mel Gorman’s Memory Compaction patches that literally ‘defragment’ physical memory to allow for larger contiguous regions to be used in certain allocations where contiguousness is required, for example in DMA operations withindevice drivers.
January also saw a brief discussion around kernel mode setting. Since modern kernels increasingly include in-kernel support for setting up graphics modes, it isn’t necessary for user-space software like Xorg to do this heavy lifting now. But Linus Torvalds was in no rush to remove user-space support for mode setting entirely, preferring to wait several years until all the kinks are gone and nobody is left using an older incompatible distribution.
February saw the release of 2.6.33. The new kernel included support for the reverse-engineered Nvidia driver (Nouveau) and the Data Replicated Block Device (DRBD), which apparently is now even in use on the kernel.org servers for replicating out content. Linus, who was growing increasingly unhappy with developers posting patches late in the ‘merge window’ (the period of time in which features are allowed into a new release) began making noises about reducing the merge window for 2.6.34, even closing it randomly in order to force good behaviour of posting patches early. This is a threat he did actually partially carry out in the following month.
The first nasty security hole of 2010 reared its ugly head in February. A problem was discovered in the kernel’s compatibility code for running a 32-bit distribution ‘user space’ on a 64-bit kernel. The exploit involved 32-bit code attempting (and failing) to run 64-bit code, which confused the kernel enough that it could be abused into causing a panic (crash).
March saw the closing (early, as threatened… then partially relaxed as Linus admitted he was “too much of a softie”) of the 2.6.34 merge window. New features that were accepted included Rafael J Wysocki’s excellent work on ‘asynchronous suspend and resume’, allowing the kernel to optimise the process of shutting down unused devices and the time taken for suspend. There was also a massive flame war around the merging of an incompatible set of patches for the Nouveau driver. Nouveau had previously been shipping (as a separate patch) in Fedora for some time. Linus was still very unhappy it hadn’t been merged sooner and blew a fuse when a patch that would have required distribution updates to Fedora 12 (which were not forthcoming as work was happening in the more experimental ‘rawhide’ area of Fedora) in order to test landed in Nouveau. Linus said, “I’m not going to release a kernel that I can’t test.” It got sorted out (not entirely cleanly) with special libraries built for Linus by Dave Airlie, the poor graphics subsystem maintainer.