• TCPIP Network Stack Performance in Linux Kernel 2.4 and 2.5 - Vaijayanthimala Anand, Bill Harner

    A look at TCP/IP scalability to gigabit networking on SMP machines. Demonstrates the costs of cache line bouncing on SMP (and thus the need for CPU affinity for both processes and IRQ handlers), how the performance impact of unaligned buffers can matter in hot paths, the benefit of recycling buffers rather than freeing and reallcating them, and the importance of processing events in batches rather than one at a time.

  • Mobile Cluster Computing Using IPv6 - Abdul Basit, Chin-Chih Chang

    Lobbying for the use of IPv6 in computing clusters, especially for dynamically moving nodes between different clusters. [Ivory tower academia, not specific to Linux, ends with "Our future work is to refine our design and put it into implementation."]

  • Incrementally Improving the Linux SCSI Subsystem - James E.J. Bottomley

    Modifying the scsi subsystem to do device scanning and inquiry via hotplug (both at boot time and afterwards), including the ability to hotplug device hierarchies ("bridge insertion events", new busses each potentially containing multiple scsi devices). Improving the scsi error handler to better deal with multiple queued commands. Contains some nice material on the history of hotplug (with reference to Greg KH's 2001 paper), and an appendix describing the operation of the scsi subsystem.

  • Lustre: The intergalactic file system - Peter J. Braam, Philip Schwan

    Lustre is a clustering filesystem, successor to CODA. [Still not in kernel.]

  • Cebolla: Pragmatic IP Anonymity. - Zach Brown

    Cebolla is a Unix daemon providing a virtual private network that anonymizes senders and recipients. Done entirely in userspace, based on UDP. [Reinvents TCP.]

  • SE Debian: how to make NSA SE Linux work in a distribution - Russel Coker

    Adding SELinux support to a distribution, configuring and administering a system under SELinux, managing policy, etc.

  • The Long Road to the Advanced Encryption Standard - Jean-Luc Cooke

    The history of DES, obsolescence of triple DES, the 15 candidate cipers for AES round 1, the 5 finalists in round 2, explanation of the winner "Rijndael", how the final AES differs from Rijndael, modes of operation, and a mathematical walkthrough of the algorighm.

  • System Installation Suite: Massive Installation for Linux - Sean Dague

    Large clusters require the installation and maintenance of hundreds or thousands of identical nodes, generally via network installs from a central image server. Most people use something simple like rsync, or perhaps drive the network install support in their distro with a script, but this paper describes how IBM evolved the AIX network manager into LUI ("Linux Utility for cluster Installation") and then took ideas from another project (SystemImager) to create an even bigger project called "System Installation Suite". There's a distribution called "Brian's Own Embedded Linux" in there too.

  • Making Linux Safe for Virtual Machines - Jeff Dike

    User Mode Linux is a port of the Linux kernel to run as a normal user process, requiring no special support from the host kernel. Its device drivers talk to libc instead of directly to hardware, and the UML kernel process intercepts and handles system calls for child processes via ptrace.

    [UML broke a lot of ground in Linux virtualization, and this paper foreshadows things like containers, eliminating redundant cacheing, and memory management cooperation between host and guest, that would be genericized to other virtualization schemes years later. UML is still an excellent tool for learning about and debugging Linux.]

  • Online ext2 and ext3 Filesystem Resizing - Andreas E. Dilger

    Following up on LVM's ability to grow and shrink partitions while they're in use, this paper describes theory and tools to do the same to unmounted ext2/ext3 filesystems, and a kernel patch to grow mounted ext2/ext3 filesystems with a new "mount -o remount,resize=" option. (The tricky bit is allocating more blocks to group descriptor tables.)

  • Running Linux on a DSP: Exploiting the Computational Resources of a programmable DSP Micro-Processor with uClinux - Michael Durrant, Jeff Dionne, Michael Leslie

    uClinux is a Linux distribution designed to run on processors with no MMU (Memory Managment Unit), including cheap Digital Signal Processors with minimal general purpose processing functionality. It combines a NOMMU linux kernel, a NOMMU C library (uClibc), and nommu utilities (based on BusyBox). The original targets of uClinux were Motorola's [now Freescale's] DragonBall and ColdFire designs, followed by the ADI BlackFin and nommu variants of MIPS, Hitachi SH2, ARM, and SPARC. Discusses development tools (cross compilers), API differences (no memory protection, fixed size stack, no fork() or brk(), addition of binflat), kernel changes, and porting to new platforms.

    An Approach to Injecting faults into Hardened Software - Dave Edwards, Lori Matassa

    Describes the authors' test harness which tracks the state of hardware and injects faults for a device driver to handle, in a way that does not require any knowledge of the implementation of the driver being tested. [The paper is full of buzzwords like "hardening" and "availability", and starts with a big legal disclaimer from Intel. A more modern approach might be to inject faults into virtual hardware under something like QEMU.]

    Advanced Boot Scripts - Richard Gooch

    This paper describes a dependency based scheme for running boot scripts in parallel, with comparison to both BSD and SysV style conventional init scripts (providing a good introduction to those types of init scripts in the process). The approach described here uses a modified simpleinit(8) from util-linux, plus a new utility initctl(8) to declare dependencies. Describes using the dependency table to switch runlevels or shut down the system. [Follow-ups to this paper include using make to run init scripts (lwn link) and Ubuntu's upstart.]

    Porting Drivers to HP ZX1 - Grant Grundler

    Making drivers portable ("If a driver doesn't 'just work,' generally it's a matter of figuring out which wrong assumptions about the HW (or OS) are embedded in the driver."). General hardware issues (DMA mapping, Interrupts, IO ports vs MMIO, CPU vs IO timings, depending on BIOS (or equivalent) to initialize hardware, debugging), and some details of specific hardware platforms the author worked on.

    Reverse engineering an advanced filesystem - Christoph Hellwig

    The creation of the FreeVxFS driver to handle the Veritas filesystem on-disk format, by reverse engineering. Legal issues, creating a description of the on-disk layout, symbolic debugging and disassembly of binary-only driver, implementation of new driver.

    BitKeeper for Kernel Developers - Val Henson, Jeff Garzik

    Bitkeeper was the first source control system Linus used in Linux development, from v2.5.0 to v2.6.12-rc2. (Before that he used no source control system, and just put out periodic release tarballs.)

    [Linux development no longer uses BitKeeper, due to the expiration of the "Don't piss off Larry license" (more here) which prompted Linus to write git. This paper still serves as a decent introduction to distributed source control. There is a git version of the contents of the old Linux bitkeeper repository online.]

    ols2002_proceedings-pages-213-222.pdf
    ols2002_proceedings-pages-223-241.pdf
    ols2002_proceedings-pages-242-249.pdf
    ols2002_proceedings-pages-250-259.pdf
    ols2002_proceedings-pages-260-264.pdf
    ols2002_proceedings-pages-265-273.pdf
    ols2002_proceedings-pages-274-288.pdf
    ols2002_proceedings-pages-289-300.pdf
    ols2002_proceedings-pages-301-309.pdf
    ols2002_proceedings-pages-310-316.pdf
    ols2002_proceedings-pages-317-329.pdf
    ols2002_proceedings-pages-330-337.pdf
    ols2002_proceedings-pages-338-367.pdf
    ols2002_proceedings-pages-368-375.pdf
    ols2002_proceedings-pages-376-382.pdf
    ols2002_proceedings-pages-383-389.pdf
    ols2002_proceedings-pages-390-406.pdf
    ols2002_proceedings-pages-407-413.pdf
    ols2002_proceedings-pages-414-424.pdf
    ols2002_proceedings-pages-425-438.pdf
    ols2002_proceedings-pages-439-450.pdf
    ols2002_proceedings-pages-451-458.pdf
    ols2002_proceedings-pages-459-467.pdf
    ols2002_proceedings-pages-468-478.pdf
    ols2002_proceedings-pages-479-495.pdf
    ols2002_proceedings-pages-496-520.pdf
    ols2002_proceedings-pages-521-529.pdf
    ols2002_proceedings-pages-530-544.pdf
    ols2002_proceedings-pages-545-555.pdf
    ols2002_proceedings-pages-556-564.pdf
    ols2002_proceedings-pages-565-572.pdf
    ols2002_proceedings-pages-573-593.pdf
    ols2002_proceedings-pages-594-603.pdf
    ols2002_proceedings-pages-604-617.pdf
    ols2002_proceedings-pages-618-.pdf