Kernel index

This index covers articles published in the LWN.net Kernel Page. All articles from the beginning of 2004 have been entered here.

Academic systems

Realtime Linux: academia v. reality (July 26, 2010)

Popcorn Linux pops up on linux-kernel (May 5, 2020)

Access control lists

Rich access control lists (October 20, 2015)

ACCESS_ONCE()

ACCESS_ONCE() (August 1, 2012)

ACCESS_ONCE() and compiler bugs (December 3, 2014)

Who's afraid of a big bad optimizing compiler? (July 15, 2019)

ACPI

ACPI, device interrupts, and suspend states (August 3, 2005)

An API for specifying latency constraints (August 28, 2006)

OLS: Three talks on power management (June 30, 2007)

Tripping over trip points (August 7, 2007)

The ACPI processor aggregator driver (October 7, 2009)

The cpuidle subsystem (April 26, 2010)

Idling ACPI idle (June 1, 2010)

ACPI for ARM? (November 22, 2013)

Adore root kit

A new Adore root kit (March 17, 2004)

AdvFS

What's AdvFS good for? (June 25, 2008)

AlacrityVM

AlacrityVM (August 5, 2009)

Two that didn't make it (December 22, 2009)

alloc_skb_from_cache()

alloc_skb_from_cache() (January 4, 2005)

ALSA

Fear of the void (June 9, 2004)

Alternative instructions

SMP alternatives (December 14, 2005)

Android

Wakelocks and the embedded problem (February 10, 2009)

From wakelocks to a real solution (February 18, 2009)

Fishy business (March 3, 2010)

Suspend block (April 28, 2010)

Blocking suspend blockers (May 18, 2010)

Suspend blocker suspense (May 26, 2010)

What comes after suspend blockers (June 1, 2010)

This week's episode of "Desperate Androids" (June 7, 2010)

Another wakeup event mechanism (June 23, 2010)

An alternative to suspend blockers (November 24, 2010)

A new approach to opportunistic suspend (September 27, 2011)

Yet another opportunity for opportunistic suspend (October 18, 2011)

KS2011: Patch review (October 24, 2011)

Bringing Android closer to the mainline (December 20, 2011)

Autosleep and wake locks (February 7, 2012)

The Android ION memory allocator (February 8, 2012)

The Android mainlining interest group meeting: a report (February 28, 2012)

Finding the right evolutionary niche (April 11, 2012)

KS2012: Status of Android upstreaming (September 5, 2012)

LC-Asia: An Android upstreaming update (March 12, 2013)

Integrating the ION memory allocator (September 4, 2013)

The Android Graphics microconference (October 9, 2013)

The LPC Android microconference (October 17, 2013)

In a bind with binder (October 29, 2014)

The LPC Android microconference, part 1 (September 8, 2015)

The LPC Android microconference, part 2 (September 14, 2015)

Running a mainline kernel on a cellphone (October 28, 2015)

Lightning talks (November 4, 2015)

Four new Android privilege escalations (August 10, 2016)

Bringing Android explicit fencing to the mainline (October 5, 2016)

Scheduling for Android devices (November 15, 2016)

The LPC Android microconference, part 1 (December 14, 2016)

The LPC Android microconference, part 2 (December 21, 2016)

Eliminating Android wrapfs "hackery" (April 4, 2017)

Running Android on a mainline graphics stack (September 12, 2017)

An update on the Android problem (November 7, 2017)

Bringing the Android kernel back to the mainline (November 15, 2018)

Android memory management (May 1, 2019)

Monitoring the internal kernel ABI (September 25, 2019)

Scheduling for the Android display pipeline (January 16, 2020)

Evaluating vendor changes to the scheduler (May 19, 2020)

Android kernel notes from LPC 2020 (September 10, 2020)

anonmm

Reverse mapping anonymous pages - again (March 24, 2004)

The status of object-based reverse mapping (May 19, 2004)

anon_vma

Virtual Memory II: the return of objrmap (March 10, 2004)

VM changes in 2.6.6 (April 14, 2004)

The status of object-based reverse mapping (May 19, 2004)

The merging of anon_vma and 4G/4G (May 26, 2004)

The case of the overly anonymous anon_vma (April 13, 2010)

AppArmor

The AppArmor debate begins (April 26, 2006)

Kernel Summit 2006: Security (July 19, 2006)

Linux security non-modules and AppArmor (June 27, 2007)

TOMOYO Linux and pathname-based security (April 14, 2008)

Architectures

UKUUG: The right way to port Linux (November 19, 2008)

System calls and 64-bit architectures (December 17, 2008)

ARM and defconfig files (June 16, 2010)

Little-endian PowerPC (October 6, 2010)

Upcoming DSP architectures (September 7, 2011)

LPC: Coping with hardware diversity (September 14, 2011)

Shedding old architectures and compilers in the kernel (February 26, 2018)

Software and hardware obsolescence in the kernel (August 28, 2020)

ARM

ARM's multiply-mapped memory mess (October 12, 2010)

ARM wrestling (April 6, 2011)

Rationalizing the ARM tree (April 19, 2011)

ARM kernel consolidation (May 18, 2011)

Reworking the DMA mapping code (especially on ARM) (November 16, 2011)

Irked by NO_IRQ (December 7, 2011)

Linux support for ARM big.LITTLE (February 15, 2012)

Supporting multi-platform ARM kernels (May 9, 2012)

A big.LITTLE scheduler update (June 12, 2012)

LinuxCon Japan: One zImage to rule them all (June 13, 2012)

Supporting 64-bit ARM systems (July 10, 2012)

Multi-cluster power management (February 20, 2013)

ELC: In-kernel switcher for big.LITTLE (February 27, 2013)

LC-Asia: A big LITTLE MP update (March 6, 2013)

Merging Allwinner support (June 19, 2013)

Supporting KVM on the ARM architecture (July 3, 2013)

Minisummit reports (October 29, 2013)

ACPI for ARM? (November 22, 2013)

Handling ARM architecture changes (July 23, 2014)

Porting to

Porting Linux to a new processor architecture, part 1: The basics (August 26, 2015)

Porting Linux to a new processor architecture, part 2: The early code (September 2, 2015)

Porting Linux to a new processor architecture, part 3: To the finish line (September 23, 2015)

x86

i386 and x86_64: back together? (July 31, 2007)

Detecting and handling split locks (June 7, 2019)

Developers split over split-lock detection (December 6, 2019)

VMX virtualization runs afoul of split-lock detection (April 7, 2020)

A possible end to the FSGSBASE saga (June 1, 2020)

Asymmetric multiprocessing

Dealing with complexity: power domains and asymmetric multiprocessing (June 29, 2011)

Asynchronous function calls

An asynchronous function call infrastructure (January 13, 2009)

Deadlocking the system with asynchronous functions (January 16, 2013)

Asynchronous I/O

A retry-based AIO infrastructure (March 2, 2004)

Kernel Summit: Asynchronous I/O (July 21, 2004)

Asynchronous I/O and vectored operations (February 7, 2006)

The kevent interface (February 22, 2006)

OLS: A proposal for a new networking API (July 22, 2006)

API changes: interrupt handlers and vectored I/O (October 2, 2006)

Asynchronous buffered file I/O (January 3, 2007)

Fibrils and asynchronous system calls (January 31, 2007)

Kernel fibrillation (February 6, 2007)

Threadlets (February 27, 2007)

The return of syslets (May 30, 2007)

LCA: A new approach to asynchronous I/O (January 27, 2009)

LSFMM: Reducing io_submit() latency (May 1, 2013)

Non-blocking buffered file read operations (September 23, 2014)

Asynchronous buffered read operations (March 18, 2015)

Fixing asynchronous I/O, again (January 13, 2016)

Toward non-blocking asynchronous I/O (May 30, 2017)

A new kernel polling interface (January 9, 2018)

Ringing in a new asynchronous I/O API (January 15, 2019)

io_uring, SCM_RIGHTS, and reference-count cycles (February 13, 2019)

Asynchronous fsync() (May 21, 2019)

The rapid growth of io_uring (January 24, 2020)

Automatic buffer selection for io_uring (March 20, 2020)

Operations restrictions for io_uring (July 15, 2020)

Atomic I/O operations

Atomic I/O operations (May 30, 2013)

Support for atomic block I/O operations (November 6, 2013)

A way to do atomic writes (May 28, 2019)

Atomic operations

Atomic usage patterns in the kernel (August 31, 2016)

Atomic patterns 2: coupled atomics (September 7, 2016)

Atomic spinlocks

The realtime preemption endgame (August 5, 2009)

The realtime preemption mini-summit (September 28, 2009)

atomic_t

No more 24-bit atomic_t (February 18, 2004)

The search for fast, scalable counters (February 1, 2006)

Atomic additions (July 20, 2015)

Two approaches to reference count hardening (July 7, 2016)

Atomic primitives in the kernel (July 27, 2016)

The bumpy road to reference-count protection in the kernel (November 16, 2016)

Auditing

The lightweight auditing framework (April 7, 2004)

More hooks for kernel events (February 9, 2005)

Who audits the audit code? (May 29, 2014)

Audit, namespaces, and containers (September 8, 2016)

Container IDs for the audit subsystem (December 6, 2017)

An audit container ID proposal (March 29, 2018)

Automounter

Trapfs - an automounter on the cheap (November 3, 2004)

Beancounters

Resource beancounters (August 29, 2006)

Benchmarking

Automated kernel testing (June 8, 2005)

Tracking tbench troubles (October 29, 2008)

A survey of scheduler benchmarks (June 14, 2017)

Testing scheduler thermal properties for avionics (May 15, 2020)

Scheduler benchmarking with MMTests (May 19, 2020)

Berkeley Packet Filter

A JIT for packet filters (April 12, 2011)

BPF: the universal in-kernel virtual machine (May 21, 2014)

Extending extended BPF (July 2, 2014)

A reworked BPF API (July 23, 2014)

A report from the networking miniconference (August 27, 2014)

The BPF system call API, version 14 (September 24, 2014)

Persistent BPF objects (November 18, 2015)

Last-minute control-group BPF ABI concerns (January 11, 2017)

Notes from the LPC tracing microconference (September 21, 2017)

A thorough introduction to eBPF (December 2, 2017)

Some advanced BCC topics (February 22, 2018)

Bpfilter (and user-mode blobs) for 4.18 (May 30, 2018)

IR decoding with BPF (July 9, 2018)

Binary portability for BPF programs (November 30, 2018)

Bounded loops in BPF programs (December 3, 2018)

Concurrency management in BPF (February 7, 2019)

Managing sysctl knobs with BPF (April 9, 2019)

BPF: what's good, what's coming, and what's needed (May 9, 2019)

Bounded loops in BPF for the 5.3 kernel (July 31, 2019)

BPF at Facebook (and beyond) (October 10, 2019)

BPF and the realtime patch set (October 23, 2019)

Filesystem sandboxing with eBPF (November 6, 2019)

A medley of performance-related BPF patches (January 2, 2020)

Kernel operations structures in BPF (February 7, 2020)

A look at "BPF Performance Tools" (February 26, 2020)

Impedance matching for BPF and LSM (February 26, 2020)

Dumping kernel data structures with BPF (April 27, 2020)

Rethinking bpfilter and user-mode helpers (June 12, 2020)

Sleepable BPF programs (July 7, 2020)

Networking

Attaching eBPF programs to sockets (December 10, 2014)

Early packet drop — and more — with BPF (April 6, 2016)

Network filtering for control groups (August 24, 2016)

BPF comes to firewalls (February 19, 2018)

Writing network flow dissectors in BPF (September 6, 2018)

Security

Yet another new approach to seccomp (January 11, 2012)

Kernel runtime security instrumentation (September 4, 2019)

KRSI — the other BPF security module (December 27, 2019)

KRSI and proprietary BPF programs (January 17, 2020)

A crop of new capabilities (June 8, 2020)

Tracing

BPF tracing filters (December 4, 2013)

Ktap or BPF? (April 23, 2014)

Ftrace and histograms: a fork in the road (March 4, 2015)

Tracepoints with BPF (April 13, 2016)

Using user-space tracepoints with BPF (May 11, 2018)

The state of system observability with BPF (May 1, 2019)

Kernel analysis with bpftrace (July 18, 2019)

Type checking for BPF tracing (October 28, 2019)

Unprivileged

Unprivileged bpf() (October 12, 2015)

Providing wider access to bpf() (June 27, 2019)

Reconsidering unprivileged BPF (August 16, 2019)

Big kernel lock

The Big Kernel Lock lives on (May 26, 2004)

The Big Kernel Semaphore? (September 15, 2004)

ioctl(), the big kernel lock, and 32-bit compatibility (December 15, 2004)

The new way of ioctl() (January 18, 2005)

The big kernel lock strikes again (May 13, 2008)

Kill BKL Vol. 2 (May 21, 2008)

The BKL end game (March 30, 2010)

Might 2.6.35 be BKL-free? (April 27, 2010)

BKL-free in 2.6.37 (maybe) (September 20, 2010)

Shielding driver authors from locking (October 20, 2010)

KS2010: Lightning talks (November 2, 2010)

The real BKL end game (January 26, 2011)

big.LITTLE

Linux support for ARM big.LITTLE (February 15, 2012)

A big.LITTLE scheduler update (June 12, 2012)

KS2012: ARM: A big.LITTLE update (September 5, 2012)

A report from the first Korea Linux Forum (October 16, 2012)

Multi-cluster power management (February 20, 2013)

ELC: In-kernel switcher for big.LITTLE (February 27, 2013)

LC-Asia: A big LITTLE MP update (March 6, 2013)

Bind mounts

Read-only bind mounts (May 6, 2008)

Mount namespaces, mount propagation, and unbindable mounts (June 15, 2016)

binfmt_misc

Architecture emulation containers with binfmt_misc (March 9, 2016)

BitKeeper

The kernel and BitKeeper part ways (April 6, 2005)

Block layer

Laptop mode for 2.6 (January 7, 2004)

CDROM drives and partitioning (February 25, 2004)

The return of write barriers (March 24, 2004)

Big block transfers: good or bad? (March 29, 2004)

Coming in 2.6.10 (October 20, 2004)

Network block devices and OOM safety (March 30, 2005)

Execute-in-place (May 11, 2005)

Kernel Summit 2005: Convergence of network and storage paths (July 20, 2005)

Some block layer patches (October 26, 2005)

Large block size support (May 2, 2007)

Distributed storage (August 21, 2007)

Barriers and journaling filesystems (May 21, 2008)

Block layer: integrity checking and lots of partitions (July 15, 2008)

A superficial introduction to fsblock (March 11, 2009)

Flushing out pdflush (April 1, 2009)

Linux Storage and Filesystem workshop, day 1 (April 7, 2009)

Linux Storage and Filesystem Workshop, day 2 (April 8, 2009)

DRBD: a distributed block device (April 22, 2009)

Interrupt mitigation in the block layer (August 10, 2009)

Page-based direct I/O (August 25, 2009)

The 2010 Linux Storage and Filesystem Summit, day 1 (August 9, 2010)

The 2010 Linux Storage and Filesystem Summit, day 2 (August 10, 2010)

The end of block barriers (August 18, 2010)

Notes from the block layer (February 22, 2011)

Linux Filesystem, Storage, and Memory Management Summit, Day 1 (April 5, 2011)

Future storage technologies and Linux (April 6, 2011)

Linux Filesystem, Storage, and Memory Management Summit, Day 2 (April 6, 2011)

Supporting block I/O contexts (June 18, 2012)

LSFMM: I/O hints (April 24, 2013)

LSFMM: Copy offload (April 24, 2013)

LSFMM: O_DIRECT (May 1, 2013)

The multiqueue block layer (June 5, 2013)

Tags and IDs (June 19, 2013)

Polling block drivers (June 26, 2013)

Filesystem/block interfaces (March 17, 2015)

Copy offload (March 25, 2015)

Write-stream IDs (April 7, 2015)

Block-layer I/O polling (November 11, 2015)

Block and filesystem interfaces (April 26, 2016)

Partial drive depopulation (April 27, 2016)

Quickly: Filesystems and containers / Self-encrypting drives (April 27, 2016)

Multipage bio_vecs (May 4, 2016)

Inline encryption support for block devices (March 22, 2017)

Stream ID status update (March 29, 2017)

A block layer introduction part 1: the bio layer (October 25, 2017)

Block layer introduction part 2: the request layer (November 9, 2017)

A mapping layer for filesystems (May 9, 2018)

Supporting multi-actuator drives (May 15, 2018)

A filesystem corruption bug breaks loose (December 10, 2018)

The Linux "copy problem" (May 29, 2019)

Atomic operations

Atomic I/O operations (May 30, 2013)

Support for atomic block I/O operations (November 6, 2013)

A way to do atomic writes (May 28, 2019)

Block drivers

Cleaning up the block driver API (August 28, 2007)

A new block request completion API (January 29, 2008)

How to use a terabyte of RAM (March 12, 2008)

Block layer: solid-state storage, timeouts, affinity, and more (October 15, 2008)

Block layer request queue API changes (May 18, 2009)

Reworking disk events handling (January 19, 2011)

Caching

Bcache: Caching beyond just RAM (July 2, 2010)

A bcache update (May 14, 2012)

LSFMM: Caching — dm-cache and bcache (May 1, 2013)

Discard operations

Block layer discard requests (August 12, 2008)

The trouble with discard (August 18, 2009)

The best way to throw blocks away (December 1, 2010)

Issues around discard (May 6, 2019)

Error handling

Improved block-layer error handling (June 2, 2017)

PostgreSQL's fsync() surprise (April 18, 2018)

PostgreSQL visits LSFMM (May 1, 2018)

Handling I/O errors in the kernel (June 12, 2018)

I/O scheduling

Modular, switchable I/O schedulers (September 21, 2004)

Into the ABISS (November 9, 2004)

Which is the fairest I/O scheduler of them all? (December 8, 2004)

CFQ v3 (July 12, 2005)

Variations on fair I/O schedulers (December 3, 2008)

Which I/O controller is the fairest of them all? (May 12, 2009)

The block I/O controller (November 7, 2009)

Hierarchical group I/O scheduling (February 15, 2011)

An IOPS-based I/O scheduler (January 4, 2012)

KS2012: memcg/mm: Proportional I/O controller (September 17, 2012)

The BFQ I/O scheduler (June 11, 2014)

The return of the BFQ I/O scheduler (February 3, 2016)

A way forward for BFQ (December 14, 2016)

Two new block I/O schedulers for 4.12 (April 24, 2017)

Measuring (and fixing) I/O-controller throughput loss (August 29, 2018)

I/O scheduling for single-queue devices (October 12, 2018)

Improving the performance of the BFQ I/O scheduler (March 29, 2019)

Large physical sectors

Linux and 4K disk sectors (March 11, 2009)

4K-sector drives and Linux (March 9, 2010)

Preparing for large-sector drives (January 29, 2014)

Handling 32KB-block drives (March 18, 2015)

Loopback device

A weak cryptoloop implementation in Linux? (January 21, 2004)

Partitioned loopback devices (November 10, 2004)

Asynchronous block loop I/O (January 30, 2013)

Private loop devices with loopfs (May 7, 2020)

Object storage devices

Linux and object storage devices (November 4, 2008)

Plugging

No more global unplugging (March 10, 2004)

Explicit block device plugging (April 13, 2011)

What happened to disk performance in 2.6.39 (January 31, 2012)

RAID

Journal-guided RAID resync (November 24, 2009)

DM and MD come a little closer (April 20, 2010)

The MD roadmap (February 16, 2011)

Another kernel RAID5 implementation (October 18, 2011)

A journal for MD/RAID5 (November 24, 2015)

Cluster support for MD/RAID 1 (February 3, 2016)

Solid-state storage devices

Solid-state storage devices and the block layer (October 4, 2010)

Supporting solid-state hybrid drives (November 5, 2014)

Taking control of SSDs with LightNVM (April 22, 2015)

Writeback

In defense of per-BDI writeback (September 30, 2009)

Handling writeback errors (April 4, 2017)

Fixing error reporting—again (April 25, 2018)

Bogomips

Haunted by ancient history (January 6, 2015)

Books

Linux Kernel Development, Second Edition (March 9, 2005)

Linux Device Drivers, Third Edition now online (March 15, 2005)

The Linux Kernel Primer (October 5, 2005)

Understanding the Linux Kernel, 3rd Edition (November 22, 2005)

Review: Understanding Linux Network Internals (January 24, 2006)

Book Review: User Mode Linux (May 16, 2006)

Review: Linux Kernel in a Nutshell (February 7, 2007)

Book review: Linux System Programming (December 5, 2007)

Book review: Linux Kernel Development, third edition (December 15, 2010)

Review: The Linux Programming Interface (January 19, 2011)

Bootstrap process

initramfs and where user space truly begins (July 11, 2006)

LPC: Booting Linux in five seconds (September 22, 2008)

Tracking down a "runaway loop" (December 10, 2008)

An asynchronous function call infrastructure (January 13, 2009)

USB and fast booting (April 29, 2009)

The bootstrap process on EFI systems (February 11, 2015)

Toward measured boot out of the box (September 8, 2016)

Broadcom 43xx

bcm43xx and the 802.11 stack (December 6, 2005)

How not to handle a licensing violation (April 11, 2007)

Broadcom's wireless drivers, one year later (August 29, 2011)

Btrfs

btrfs and NILFS (June 19, 2007)

A better btrfs (January 15, 2008)

Btrfs aims for the mainline (January 7, 2009)

A short history of btrfs (July 22, 2009)

JLS2009: A Btrfs update (October 27, 2009)

Supporting transactions in btrfs (November 11, 2009)

Btrfs: broken by design? (June 22, 2010)

Data temperature in Btrfs (August 3, 2010)

Whither btrfsck? (October 11, 2011)

A btrfs update at LinuxCon Europe (November 2, 2011)

Atime and btrfs: a bad combination? (May 31, 2012)

Btrfs send/receive (July 11, 2012)

VFS hot-data tracking (November 20, 2012)

LSFMM: Btrfs: "are we there yet?" (May 1, 2013)

CoreOS looks to move from Btrfs to overlayfs (December 24, 2014)

In-band deduplication for Btrfs (March 9, 2016)

Btrfs and high-speed devices (August 24, 2016)

Adding encryption to Btrfs (September 21, 2016)

Btrfs at Facebook (July 2, 2020)

LWN's guide to

The Btrfs filesystem: An introduction (December 11, 2013)

Btrfs: Getting started (December 17, 2013)

Btrfs: Working with multiple devices (December 30, 2013)

Btrfs: Subvolumes and snapshots (January 6, 2014)

Btrfs: Send/receive and ioctl() (January 22, 2014)

Budget fair queuing scheduler

Variations on fair I/O schedulers (December 3, 2008)

Buffer heads

A nasty file corruption bug - fixed (December 31, 2006)

Build system

Shrinking the kernel with gcc (January 21, 2004)

Building external modules (April 13, 2004)

Separating kernel source and object files (June 23, 2004)

The end of gcc 2.95 support (December 13, 2005)

Some patches of interest (February 28, 2006)

Testing crypto drivers at boot time (August 18, 2010)

Kconfiglib (February 2, 2011)

Better kernels with GCC plugins (October 5, 2011)

Kernel configuration for distributions (July 18, 2012)

Link-time optimization for the kernel (August 21, 2012)

Special sections in Linux binaries (January 3, 2013)

Kernel building with GCC plugins (June 14, 2016)

Creating a kernel build farm (October 5, 2016)

The end of modversions? (November 30, 2016)

A pair of GCC plugins (January 25, 2017)

A different approach to kernel configuration (September 12, 2017)

Shrinking the kernel with link-time garbage collection (December 15, 2017)

Shrinking the kernel with link-time optimization (January 18, 2018)

Shedding old architectures and compilers in the kernel (February 26, 2018)

Compiling kernel UAPI headers with C++ (September 13, 2018)

Building header files into the kernel (March 21, 2019)

bus1

Bus1: a new Linux interprocess communication proposal (August 17, 2016)

C11 atomic operations

C11 atomic variables and the kernel (February 18, 2014)

C11 atomics part 2: "consume" semantics (February 26, 2014)

Time to move to C11 atomics? (June 15, 2016)

CacheFS

A general caching filesystem (September 1, 2004)

Capabilities

Capabilities in 2.6 (April 6, 2004)

Magic groups in 2.6 (May 11, 2004)

Trustees Linux (November 16, 2004)

A bid to resurrect Linux capabilities (September 10, 2006)

File-based capabilities (November 29, 2006)

Fixing CAP_SETPCAP (October 31, 2007)

Restricting root with per-process securebits (April 30, 2008)

Capabilities for loading network modules (March 2, 2011)

CAP_SYS_ADMIN: the new root (March 14, 2012)

The trouble with CAP_SYS_RAWIO (March 13, 2013)

BSD-style securelevel comes to Linux — again (September 11, 2013)

Inheriting capabilities (February 11, 2015)

The kdbuswreck (April 22, 2015)

Tracking resources and capabilities used (July 13, 2016)

Namespaced file capabilities (June 30, 2017)

CAP_PERFMON — and new capabilities in general (February 21, 2020)

A crop of new capabilities (June 8, 2020)

CD recording

SCSI command filtering (July 31, 2006)

2.6.8 problems

2.6.8 and CD recording (August 18, 2004)

CFQ I/O scheduler

Which is the fairest I/O scheduler of them all? (December 8, 2004)

CFQ v3 (July 12, 2005)

Variations on fair I/O schedulers (December 3, 2008)

Changelogs

In search of the perfect changelog (April 22, 2009)

What's missing from our changelogs (July 24, 2013)

Character encoding

The kernel and character set encodings (February 18, 2004)

Working with UTF-8 in the kernel (March 28, 2019)

Char devices

The cdev interface (August 16, 2006)

check_flags()

file_operations method

The end of the fcntl() method (August 18, 2004)

Checkpointing

Kernel-based checkpoint and restart (August 11, 2008)

Checkpoint/restart tries to head towards the mainline (February 25, 2009)

clone_with_pids() (August 12, 2009)

eclone() (November 18, 2009)

A Checkpoint/restart update (February 24, 2010)

KS2010: Checkpoint/restart (November 2, 2010)

Checkpoint/restart: it's complicated (November 9, 2010)

Checkpoint/restart (mostly) in user space (July 19, 2011)

TCP connection hijacking and parasites - as a good thing (August 9, 2011)

Preparing for user-space checkpoint/restore (January 31, 2012)

TCP connection repair (May 1, 2012)

LCE: Checkpoint/restore in user space: are we there yet? (November 20, 2012)

Checkpoint/restore and signals (January 9, 2013)

Checkpoint/restart in user space (October 29, 2013)

A crop of new capabilities (June 8, 2020)

CIFS

On the future of smbfs (May 15, 2006)

LSFMM: User space NFS and CIFS servers (May 1, 2013)

Circular buffers

Coming in 2.6.10 (October 20, 2004)

Circular pipes (January 11, 2005)

The evolution of pipe buffers (January 18, 2005)

Class-based resource management

Kernel Summit: Class-based Kernel Resource Management (July 21, 2004)

Is CKRM worth it? (July 27, 2005)

Briefly: patch quality, CKRM, likely(), and vmsplice() (May 3, 2006)

Resource beancounters (August 29, 2006)

class_simple

Safe sysfs support (February 11, 2004)

Clockevents

Clockevents and dyntick (February 21, 2007)

CLOCK-Pro

A CLOCK-Pro page replacement implementation (August 16, 2005)

A framework for page replacement policies (March 25, 2006)

Clocks

A common clock framework (December 21, 2011)

Clusters

Clusters and distributed lock management (May 18, 2005)

Kernel Summit 2005: Clustering (July 20, 2005)

DRBD: a distributed block device (April 22, 2009)

Popcorn Linux pops up on linux-kernel (May 5, 2020)

Cluster summit presentations

Presentations from the cluster summit (August 11, 2004)

Filesystems

Should the Lustre preparation patches go in? (June 9, 2004)

Kernel Summit: Clustered storage (July 21, 2004)

The OCFS2 filesystem (May 24, 2005)

Time to merge GFS? (August 10, 2005)

Merging GFS2 (September 7, 2005)

New NFS to bring parallel storage to the masses (January 21, 2009)

A look inside the OCFS2 filesystem (September 1, 2010)

Loopback NFS: theory and practice (April 23, 2014)

cmpxchg()

RCU-safe reference counting (July 14, 2004)

Introducing lockrefs (September 4, 2013)

Coding style

How likely should likely() be? (February 10, 2004)

The cost of inline functions (April 28, 2004)

Fear of the void (June 9, 2004)

NULL v. zero (July 14, 2004)

Kernel headers and user space (November 30, 2004)

The coding style enforcer (May 11, 2005)

Drawing the line on inline (January 3, 2006)

The trouble with volatile (May 9, 2007)

Coding-style exceptionalism (July 20, 2016)

An end to implicit fall-throughs in the kernel (August 1, 2019)

Completely fair scheduler

CFS group scheduling (July 2, 2007)

Fair user scheduling and other scheduler patches (October 16, 2007)

Variations on fair I/O schedulers (December 3, 2008)

Improving scheduler latency (September 14, 2010)

TTY-based group scheduling (November 17, 2010)

CFS bandwidth control (February 16, 2011)

A group scheduling demonstration (March 16, 2011)

Completions

Some 2.6.11 API changes (January 25, 2005)

Configfs

Configfs - an introduction (August 24, 2005)

Configfs - the API (August 24, 2005)

Containers

Containers and PID virtualization (January 17, 2006)

PID virtualization: a wealth of choices (February 8, 2006)

Containers and lightweight virtualization (April 10, 2006)

Kernel Summit 2006: Paravirtualization and containers (July 19, 2006)

Another container implementation (September 19, 2006)

Process containers (May 29, 2007)

Controlling memory use in containers (July 31, 2007)

KS2007: Containers (September 10, 2007)

Process IDs in a multi-namespace world (November 6, 2007)

System call updates: indirect(), timerfd(), and hijack() (November 28, 2007)

Kernel-based checkpoint and restart (August 11, 2008)

Checkpoint/restart tries to head towards the mainline (February 25, 2009)

Which I/O controller is the fairest of them all? (May 12, 2009)

clone_with_pids() (August 12, 2009)

A Checkpoint/restart update (February 24, 2010)

Divorcing namespaces from processes (March 3, 2010)

Namespace file descriptors (September 29, 2010)

Mob rule for dentries (May 4, 2011)

Checkpoint/restart (mostly) in user space (July 19, 2011)

Running distributions in containers (October 12, 2011)

A new approach to user namespaces (April 10, 2012)

TCP connection repair (May 1, 2012)

LCE: The failure of operating systems and how we can fix it (November 14, 2012)

Namespaces in operation, part 1: namespaces overview (January 4, 2013)

SO_PEERCGROUP: which container is calling? (March 18, 2014)

Architecture emulation containers with binfmt_misc (March 9, 2016)

Virtual machines as containers (April 23, 2016)

Quickly: Filesystems and containers / Self-encrypting drives (April 27, 2016)

Containers, pseudo TTYs, and backward compatibility (June 1, 2016)

Container-aware filesystems (April 3, 2017)

Containers as kernel objects (May 23, 2017)

Process tagging with ptags (December 13, 2017)

An audit container ID proposal (March 29, 2018)

Containers as kernel objects — again (February 22, 2019)

Contiguous memory allocator

Contiguous memory allocation for drivers (July 21, 2010)

A reworked contiguous memory allocator (June 14, 2011)

CMA and ARM (July 5, 2011)

A deep dive into CMA (March 14, 2012)

CMA and compaction (April 23, 2016)

Control groups

Integrating memory control groups (May 17, 2011)

LPC: Control groups (September 20, 2011)

Timer slack for slacker developers (October 17, 2011)

Limiting system calls via control groups? (October 19, 2011)

KS2011: Coming to love control groups (October 24, 2011)

Per-cgroup TCP buffer limits (December 6, 2011)

Fixing control groups (February 28, 2012)

Two approaches to kernel memory usage accounting (March 7, 2012)

A proposed plan for control groups (March 14, 2012)

KS2012: memcg/mm: Improving kernel-memory accounting for memory cgroups (September 17, 2012)

Throwing one away (September 19, 2012)

The mempressure control group proposal (January 3, 2013)

LSFMM: Soft reclaim (April 23, 2013)

When the kernel ABI has to change (July 2, 2013)

The evolution of control groups (October 29, 2013)

The past, present, and future of control groups (November 20, 2013)

Another daemon for managing control groups (December 5, 2013)

The unified control group hierarchy in 3.16 (June 11, 2014)

Control group namespaces (November 19, 2014)

Memory control group fairness (April 27, 2016)

Tracking resources and capabilities used (July 13, 2016)

Network filtering for control groups (August 24, 2016)

Last-minute control-group BPF ABI concerns (January 11, 2017)

A resolution on control-group network filters (February 15, 2017)

Three sessions on memory control groups (May 1, 2018)

Cleaning up after dying control groups (May 7, 2019)

Remote memory control-group charging (May 7, 2019)

Shrinking filesystem caches for dying control groups (May 29, 2019)

I/O bandwidth controllers

Writeback and control groups (June 17, 2015)

Controlling block-I/O latency (May 3, 2018)

The block I/O latency controller (July 5, 2018)

The creation of the io.latency block I/O controller (March 14, 2019)

The io.weight I/O-bandwidth controller (June 28, 2019)

LWN's guide to

Control groups, part 1: On the history of process grouping (July 1, 2014)

Control groups, part 2: On the different sorts of hierarchies (July 9, 2014)

Control groups, part 3: First steps to control (July 16, 2014)

Control groups, part 4: On accounting (July 23, 2014)

Control groups, part 5: The cgroup hierarchy (July 30, 2014)

Control groups, part 6: A look under the hood (August 6, 2014)

Control groups, part 7: To unity and beyond (August 13, 2014)

Thread-level control

Thread-level management in control groups (September 1, 2015)

Thread-level control with resource groups (March 16, 2016)

The case of the stalled CPU controller (August 17, 2016)

Control-group thread mode (February 22, 2017)

A milestone for control groups (July 31, 2017)

Coprocessors

LSFMM: Coprocessors, exit times, and volatile ranges, and more (April 23, 2013)

copy_file_range()

copy_file_range() (October 7, 2015)

Copyright issues

Buying the kernel (October 13, 2004)

The kernel and binary firmware (April 6, 2005)

The Philips webcam driver - again (May 4, 2005)

The Developer's Certificate of Origin, v1.1 (June 15, 2005)

On the value of EXPORT_SYMBOL_GPL (October 5, 2005)

On binary drivers and stable interfaces (November 9, 2005)

EXPORT_SYMBOL_GPL_FUTURE() (February 13, 2006)

Code of uncertain origin (August 9, 2006)

Code of (still) uncertain origin (August 15, 2006)

Resolved: firmware is not software (August 23, 2006)

GPL-only symbols and ndiswrapper (October 25, 2006)

How not to handle a licensing violation (April 11, 2007)

More quotes of the week - scenes from a flame war (June 19, 2007)

NDISwrapper dodges another bullet (March 5, 2008)

Kernel markers and binary-only modules (March 24, 2008)

Relicensing tracepoints and markers (November 4, 2009)

The trouble with firmware (January 5, 2011)

Bounding GPL compliance times (February 9, 2011)

dma-buf and binary-only modules (February 22, 2012)

The exfiltrated exFAT driver (July 24, 2013)

Questioning EXPORT_SYMBOL_GPL() (June 23, 2014)

The kernel community confronts GPL enforcement (August 31, 2016)

Maintainers Summit: SPDX, cross-subsystem development, and conclusion (November 8, 2017)

SPDX identifiers in the kernel (November 16, 2017)

Heterogeneous memory management meets EXPORT_SYMBOL_GPL() (June 12, 2018)

The proper use of EXPORT_SYMBOL_GPL() (October 27, 2018)

Netgpu and the hazards of proprietary kernel modules (July 31, 2020)

copy_*_user()

Hardened usercopy (August 3, 2016)

Hardened usercopy whitelisting (July 7, 2017)

Two topics in user-space access (March 5, 2019)

Proposed return value change

API changes under consideration (August 24, 2004)

COW links

COW Links (March 29, 2004)

cpufreq

Fixing the ondemand governor (April 20, 2010)

Improvements in CPU frequency management (April 6, 2016)

CPU frequency governors and remote callbacks (September 4, 2017)

Saving frequency scaling in the data center (May 21, 2020)

CPUhog

Who let the hogs out? (March 16, 2010)

Cpusets

Cpusets and memory policies (March 22, 2017)

Crash dumps

Diskdump: a new crash dump system (June 2, 2004)

Crash dumps with kexec (October 27, 2004)

Software suspend - again (February 6, 2006)

Persistent storage for a kernel's "dying breath" (March 23, 2011)

Credentials

Credential records (September 25, 2007)

Cryptography

Cryptographic signatures on kernel modules (July 7, 2004)

Asynchronous crypto (November 3, 2004)

An API for user-space access to kernel cryptography (August 25, 2010)

Trusted and encrypted keys (October 6, 2010)

A netlink-based user-space crypto API (October 20, 2010)

A crypto module loading vulnerability (January 28, 2015)

WireGuarding the mainline (August 6, 2018)

Reconsidering Speck (August 8, 2018)

Progress on Zinc (thus WireGuard) (September 26, 2018)

Zinc: a new kernel cryptography API (November 6, 2018)

Adiantum: encryption for the low end (January 16, 2019)

WireGuard and the crypto API (October 16, 2019)

Cryptoloop

A weak cryptoloop implementation in Linux? (January 21, 2004)

Customer panel

Kernel Summit: The customer panel (July 21, 2004)

Data integrity

Ext3 and RAID: silent data killers? (August 31, 2009)

Notes from the block layer (February 22, 2011)

Stable pages (May 11, 2011)

Ensuring data reaches disk (September 7, 2011)

Optimizing stable pages (December 5, 2012)

LSFMM: Storage data integrity (April 24, 2013)

Data Plane Development Kit (DPDK)

Network acceleration with DPDK (July 5, 2017)

DAX

Supporting filesystems in persistent memory (September 2, 2014)

DAX and fsync: the cost of forgoing page structures (February 24, 2016)

The persistent memory "I know what I'm doing" flag (March 2, 2016)

DAX on BTT (May 4, 2016)

The future of DAX (March 27, 2017)

daxctl() — getting the other half of persistent-memory performance (June 26, 2017)

DAX semantics (May 13, 2019)

D-Bus

Fast interprocess messaging (September 15, 2010)

Speeding up D-Bus (February 29, 2012)

Missing the AF_BUS (July 3, 2012)

DCCP

Linux gets DCCP (August 30, 2005)

Debian kernel team

The new Debian kernel team (May 26, 2004)

Debugging

Bringing kgdb into 2.6 (February 10, 2004)

Finding kernel problems automatically (June 1, 2004)

Diskdump: a new crash dump system (June 2, 2004)

Debugging kernel modules (June 23, 2004)

Crash dumps with kexec (October 27, 2004)

On not getting burned by kmap_atomic() (November 16, 2004)

Debugfs (December 13, 2004)

Useful gadget: /proc/page_owner (February 1, 2005)

The __nocast attribute (March 29, 2005)

Double kfree() errors (March 6, 2006)

A nasty file corruption bug - fixed (December 31, 2006)

Short subjects: kerneloops, read-mostly, and port 80 (December 18, 2007)

Development issues part 2: Bug tracking (January 9, 2008)

An object debugging infrastructure (March 3, 2008)

Bisection divides users and developers (April 15, 2008)

An updated guide to debugfs (May 25, 2009)

Hw-breakpoint: shared debugging registers (September 16, 2009)

Merging kdb and kgdb (February 17, 2010)

Persistent storage for a kernel's "dying breath" (March 23, 2011)

The dynamic debugging interface (March 22, 2011)

Displaying QR codes for kernel crashes (June 27, 2012)

Bugzilla, lightning talks, and future summits (October 29, 2013)

Debugging ARM kernels using fast interrupts (May 29, 2014)

A kernel debugger in Python: drgn (May 29, 2019)

Delay accounting

Some patches of interest (February 28, 2006)

del_timer()

Deleting timers quickly (May 12, 2004)

Dentry cache

Dcache scalability and RCU-walk (December 14, 2010)

Dcache scalability and security modules (April 27, 2011)

Mob rule for dentries (May 4, 2011)

How to ruin Linus's vacation (July 19, 2011)

A VFS deadlock post-mortem (April 3, 2013)

Dentry negativity (March 12, 2020)

Desktop support

Kernel Summit 2005: The Kernel and the Linux desktop (July 20, 2005)

A desktop kernel wishlist (October 29, 2014)

Development model

Linus merges up a storm (April 14, 2004)

Kernel Summit: Development process (July 21, 2004)

Another look at the new development model (July 27, 2004)

The -mm development tree (October 5, 2004)

MODULE_PARM deprecated (October 20, 2004)

Some development model notes (October 27, 2004)

Four-level page tables merged (January 5, 2005)

Flushing the page cache from user space (February 22, 2005)

Finding the boundaries for stable kernel patches (April 5, 2005)

Andrew Morton at linux.conf.au (April 23, 2005)

The end of the devfs story (June 13, 2005)

Kernel Summit 2005: The hardware vendors' panel (July 19, 2005)

Reiser4 and kernel inclusion (September 21, 2005)

On the merging of ktimers (October 19, 2005)

What's not going into 2.6.18 (June 6, 2006)

Time for ext4? (June 12, 2006)

Kernel Summit 2006: Kernel quality and development process (July 18, 2006)

Kernel Summit 2006: Development process II (July 19, 2006)

Old kernels and new compilers (August 21, 2006)

Device drivers and non-disclosure agreements (October 9, 2006)

Who's writing 2.6.21 and related issues (March 7, 2007)

Pointy-haired kernel hackers? (July 11, 2007)

Still waiting for swap prefetch (July 25, 2007)

The case of the unwelcome attribution (September 19, 2007)

PF_CAN (October 8, 2007)

Getting the right kind of contributions (May 28, 2008)

Andrew Morton on kernel development (June 11, 2008)

KS2008: Linux 3.0 (September 16, 2008)

Btrfs to the mainline? (October 8, 2008)

An open letter to Evgeniy Polyakov (November 25, 2008)

On the management of the Video4Linux subsystem tree (February 24, 2009)

TuxOnIce: in from the cold? (May 13, 2009)

Communicating requirements to kernel developers (July 14, 2009)

Fault injection and unexpected requirement injection (December 2, 2009)

Redesigning asynchronous suspend/resume (December 16, 2009)

Two that didn't make it (December 22, 2009)

After the merge window closed... (March 16, 2010)

KVM, QEMU, and kernel project management (March 23, 2010)

A suspend blockers post-mortem (June 2, 2010)

ARM and defconfig files (June 16, 2010)

On the scalability of Linus (July 2, 2010)

A new combined tree for storage subsystems (September 15, 2010)

ARM's multiply-mapped memory mess (October 12, 2010)

KS2010: Big out-of-tree projects (November 2, 2010)

KS2010: Development process (November 3, 2010)

ARM wrestling (April 6, 2011)

Rationalizing the ARM tree (April 19, 2011)

The platform problem (May 18, 2011)

Android, forking, and control (June 6, 2011)

Avoiding the OS abstraction trap (August 12, 2011)

On multi-platform drivers (September 7, 2011)

Finding the right evolutionary niche (April 11, 2012)

LinuxCon Japan: Making kernel developers less grumpy (June 6, 2012)

A kernel panel convenes in Edinburgh (October 23, 2013)

On saying "no" (October 29, 2013)

AMD's Display Core difficulties (December 13, 2016)

LZ4: vendoring in the kernel (February 1, 2017)

Bash the kernel maintainers (November 6, 2017)

Too many lords, not enough stewards (January 31, 2018)

Two perspectives on the maintainer relationship (March 20, 2018)

Code review

Where have all the reviewers gone? (September 11, 2006)

A critical look at sysfs attribute values (March 17, 2010)

KS2011: Patch review (October 24, 2011)

Uninitialized blocks and unexpected flags (November 28, 2012)

A FALLOC_FL_NO_HIDE_STALE followup (December 5, 2012)

What's missing from our changelogs (July 24, 2013)

Unreviewed code in 3.11 (August 7, 2013)

Two sessions on review (August 20, 2014)

On the problem of maintainer abuse (December 17, 2014)

Memory-management patch review (March 29, 2017)

The trouble with SMC-R (May 18, 2017)

The memory-management development process (April 27, 2018)

The memory-management subsystem development process (May 7, 2019)

Community

ELC: Morton and Saxena on working with the kernel community (April 21, 2008)

KS2010: Welcoming newcomers (November 2, 2010)

Developer recruitment and outreach (November 4, 2015)

Contributor statistics

Who wrote 2.6.20? (February 21, 2007)

Who's writing 2.6.21 and related issues (March 7, 2007)

Who wrote - and approved - 2.6.22 (June 11, 2007)

2.6.24 - some statistics (January 9, 2008)

How patches get into the mainline (February 10, 2009)

Developer conduct

KS2007: Developer relations and development process (September 10, 2007)

On kernel mailing list behavior (July 17, 2013)

Code, conflict, and conduct (September 18, 2018)

The kernel's code of conduct, one week later (September 26, 2018)

The code of conduct at the Maintainers Summit (October 23, 2018)

A panel discussion on the kernel's code of conduct (November 20, 2018)

Developers as children

Quote of the week (June 15, 2004)

Diversity

Outreach program for women—kernel edition (June 12, 2013)

The Outreach Program for Women (October 29, 2013)

Driver merging

Merging drivers early (February 27, 2008)

Why some drivers are not merged early (June 18, 2008)

LIRC delurks (September 10, 2008)

KS2008: When should drivers be merged? (September 16, 2008)

Moving the -staging tree (October 1, 2008)

The sad story of the em28xx driver (November 11, 2008)

News from the staging tree (September 9, 2009)

On the driver life cycle (October 13, 2009)

Kernel support for infrared receivers (December 2, 2009)

Broadcom's wireless drivers, one year later (August 29, 2011)

Vtunerc and software acceptance politics (December 14, 2011)

Merging Allwinner support (June 19, 2013)

Email analysis

Analyzing kernel email (November 13, 2019)

Enterprise kernels

Kernel competition in the enterprise space (March 14, 2012)

Git

Rebasing and merging in kernel repositories (June 18, 2019)

Kernel quality

Toward better kernel releases (December 7, 2004)

Is the kernel development process broken? (March 9, 2005)

Quotes of the week (March 8, 2005)

Kernel Summit 2005: Development process and quality assurance (July 20, 2005)

Kernel testing and regressions: an example (July 26, 2005)

The newest development model and 2.6.14 (November 2, 2005)

Briefly: patch quality, CKRM, likely(), and vmsplice() (May 3, 2006)

Kernel bugs: out of control? (May 10, 2006)

Putting a lid on USB power (June 5, 2006)

Return values, warnings, and error situations (October 17, 2006)

Buried in warnings (November 1, 2006)

A tale of two release cycles (May 1, 2007)

The thorny case of kmalloc(0) (June 5, 2007)

KS2007: Kernel quality (September 6, 2007)

Various topics related to kernel quality (November 14, 2007)

Memory allocation failures and scary warnings (April 7, 2008)

Time to slow down? (May 7, 2008)

Tightening the merge window rules (September 9, 2008)

KS2008: Kernel quality and release process (September 16, 2008)

Tracking of testers and bug reporters - a status report (November 11, 2008)

A tempest in a tty pot (July 29, 2009)

KS2009: Regressions (October 19, 2009)

KS2010: Regressions (November 2, 2010)

A more detailed look at kernel regressions (November 10, 2010)

KS2011: Preemption disable and verifiable APIs (October 24, 2011)

Drivers as documentation (November 22, 2011)

Removing uninitialized_var() (December 19, 2012)

Kernel quality control, or the lack thereof (December 7, 2018)

linux-next

linux-next and patch management process (February 13, 2008)

A day in the life of linux-next (June 23, 2008)

The current development kernel is...linux-next? (July 8, 2008)

Linux-next meets the merge window (July 23, 2008)

KS2009: Staging, linux-next, and the development process (October 21, 2009)

Bypassing linux-next (January 19, 2011)

KS2012: Improving development processes: linux-next (September 12, 2012)

The linux-next and -stable trees (October 29, 2013)

The state of linux-next (August 20, 2014)

Loadable modules

The abrupt un-exporting of symbols (January 12, 2005)

Exported symbols and the internal API (September 11, 2007)

Tightening symbol exports (November 27, 2007)

Tracing unsigned modules (March 5, 2014)

Maintainers

The kernel maintainer gap (October 30, 2013)

On moving on from being a maintainer (January 6, 2016)

On Linux kernel maintainer scalability (October 12, 2016)

Group maintainership models (November 2, 2016)

Scaling the kernel's MAINTAINERS file (August 10, 2017)

Patch management

Best practices for a big patch series (February 12, 2014)

Why kernel development still uses email (October 1, 2016)

Change IDs for kernel patches (August 29, 2019)

Defragmenting the kernel development process (September 14, 2019)

Patterns

Linux kernel design patterns - part 1 (June 8, 2009)

Linux kernel design patterns - part 2 (June 12, 2009)

Linux kernel design patterns - part 3 (June 22, 2009)

Ghosts of Unix Past: a historical search for design patterns (October 27, 2010)

Ghosts of Unix past, part 2: Conflated designs (November 4, 2010)

Ghosts of Unix past, part 3: Unfixable designs (November 16, 2010)

Ghosts of Unix past, part 4: High-maintenance designs (November 23, 2010)

Object-oriented design patterns in the kernel, part 1 (June 1, 2011)

Object-oriented design patterns in the kernel, part 2 (June 7, 2011)

Flags as a system call API design pattern (February 12, 2014)

Proper handling of unknown flags in system calls (February 26, 2014)

Security issues

Handling kernel security problems (July 16, 2008)

debugfs: rules not welcome (February 22, 2011)

Dirty COW and clean commit messages (October 21, 2016)

Toward better handling of hardware vulnerabilities (September 12, 2018)

Improving the handling of embargoed hardware-security bugs (October 25, 2018)

Stable tree

Some numbers and thoughts on the stable kernels (August 27, 2010)

Further notes on stable kernels (September 8, 2010)

Maintaining a stable kernel on an unstable base (September 29, 2010)

A long-term support initiative update (February 29, 2012)

The value of release bureaucracy (April 17, 2012)

KS2012: Stable kernel management (September 12, 2012)

Some stable tree grumbles (July 17, 2013)

The linux-next and -stable trees (October 29, 2013)

The stable tree (August 20, 2014)

How many -stable patches introduce new bugs? (June 28, 2016)

Backports and long-term stable kernels (September 14, 2016)

A discussion on stable kernel workflow issues (November 1, 2016)

Cramming features into LTS kernel releases (October 10, 2017)

The strange story of the ARM Meltdown-fix backport (March 15, 2018)

Machine learning and stable kernels (September 12, 2018)

Making stable kernels more stable (October 24, 2018)

A filesystem corruption bug breaks loose (December 10, 2018)

The case of the supersized shebang (February 18, 2019)

Testing and the stable tree (May 28, 2019)

The stable-kernel process (September 16, 2019)

Identifying buggy patches with machine learning (November 4, 2019)

Revisiting stable-kernel regressions (February 13, 2020)

Maintaining stable stability (July 22, 2020)

Preparing for the realtime future (September 9, 2020)

User-space API

Sysfs and a stable kernel ABI (February 22, 2006)

ABI stability documentation (February 28, 2006)

Kevents and review of new APIs (August 23, 2006)

The final wireless extension? (October 4, 2006)

The death and possible rebirth of sysctl() (October 18, 2006)

Application-friendly kernel interfaces (March 26, 2007)

2.6 and the user-space ABI (May 15, 2007)

timerfd() and system call review (August 14, 2007)

Re-deprecating sysctl() (August 29, 2007)

KS2007: The greater kernel ecosystem and user-space APIs (September 6, 2007)

Process IDs in a multi-namespace world (November 6, 2007)

Debugfs and the making of a stable ABI (December 3, 2008)

Removing binary sysctl (November 11, 2009)

Extended error reporting (February 17, 2010)

Nouveau and interface compatibility (March 10, 2010)

The ghost of sysfs past (July 21, 2010)

Statistics and tracepoints (August 24, 2010)

KS2010: ABI status for tracepoints (November 2, 2010)

KS2010: A staging process for ABIs (November 2, 2010)

The media controller subsystem (November 16, 2010)

The kernel and the C library as a single project (November 30, 2010)

Ftrace, perf, and the tracing ABI (May 11, 2011)

-EWHICHERROR? (June 29, 2011)

The udev tail wags the dog (August 24, 2011)

Hardware face detection (November 29, 2011)

System call filtering and no_new_privs (January 18, 2012)

Short sleeps suffering from slack (February 17, 2012)

A sys_poll() ABI tweak (February 22, 2012)

Fixing the unfixable autofs ABI (April 30, 2012)

Removing four bytes from the kernel ABI (May 23, 2012)

msync() and subtle behavioral tweaks (June 19, 2012)

Virtualization and the perf ABI (December 19, 2012)

Glibc and the kernel user-space API (January 30, 2013)

When the kernel ABI has to change (July 2, 2013)

Device trees as ABI (July 30, 2013)

A perf ABI fix (September 24, 2013)

The kernel/user-space boundary (October 29, 2013)

Fixing FS_IOC_GETFLAGS (December 11, 2013)

Changing the default shared memory limits (April 23, 2014)

Filesystem notification, part 1: An overview of dnotify and inotify (July 9, 2014)

Filesystem notification, part 2: A deeper investigation of inotify (July 14, 2014)

Handling ARM architecture changes (July 23, 2014)

How implementation details become ABI: a case study (October 1, 2014)

Haunted by ancient history (January 6, 2015)

Pagemap: security fixes vs. ABI compatibility (April 29, 2015)

Designing better kernel ABIs (October 26, 2016)

Specifying the kernel ABI (June 21, 2017)

Rethinking the Stack Clash fix (July 13, 2017)

C library system-call wrappers, or the lack thereof (November 12, 2018)

Maintainers Summit topics: pull depth, hardware vulnerabilities, etc. (September 17, 2019)

Free user space for non-graphics drivers (June 3, 2020)

Version numbers

Linux 3.0? (September 3, 2008)

2.6.x-rc0 (October 7, 2009)

Development tools

Ketchup with that? (April 28, 2004)

The end of gcc 2.95 support (December 13, 2005)

Kernel Summit 2006: Automated testing (July 19, 2006)

Device resource management (January 2, 2007)

Using Promela and Spin to verify parallel algorithms (August 1, 2007)

Who maintains this file? (August 21, 2007)

KS2008: Development tools (September 16, 2008)

Who is the best inliner of all? (January 14, 2009)

Poke-a-hole and friends (June 10, 2009)

Finding buffer overflows with Parfait (July 29, 2009)

Hw-breakpoint: shared debugging registers (September 16, 2009)

A module for crashing the kernel (January 26, 2010)

Undertaker 1.0 (February 1, 2011)

The dynamic debugging interface (March 22, 2011)

KS2011: Scheduler testing (October 24, 2011)

Validating Memory Barriers and Atomic Instructions (December 6, 2011)

Trusting the hardware too much (February 15, 2012)

Linsched for 3.3 (March 21, 2012)

I/O Hook (July 30, 2013)

The kernel address sanitizer (September 17, 2014)

Memory-management testing and debugging (March 16, 2015)

Testing power failures (March 18, 2015)

Fuzzing perf_events (August 5, 2015)

libnvdimm, or the unexpected virtue of unit tests (August 12, 2015)

Speeding up kernel development with QEMU (October 14, 2015)

Protecting private structure members (January 6, 2016)

Coverage-guided kernel fuzzing with syzkaller (March 2, 2016)

Automatically detecting kernel interface changes (October 19, 2016)

A formal kernel memory-ordering model (part 1) (April 14, 2017)

An introduction to the BPF Compiler Collection (December 22, 2017)

BPFd: Running BCC tools remotely across systems and architectures (January 23, 2018)

Software-tag-based KASAN (September 26, 2018)

Snowpatch: continuous-integration testing for the kernel (January 26, 2019)

Finding race conditions with KCSAN (October 14, 2019)

Next steps for kernel workflow improvement (November 1, 2019)

Better tools for kernel developers (February 6, 2020)

Attestation for kernel patches (March 2, 2020)

The pseudo cpuidle driver (May 21, 2020)

blktests

Storage testing (May 28, 2019)

Coccinelle

Semantic patching with Coccinelle (January 20, 2009)

Evolutionary development of a semantic patch using Coccinelle (March 30, 2010)

KS2010: Lightning talks (November 2, 2010)

Three talks on kernel development tools (October 22, 2014)

Inside the mind of a Coccinelle programmer (August 31, 2016)

DAMON

Memory-management optimization with DAMON (February 20, 2020)

Git

The guts of git (April 12, 2005)

A very quick guide to starting with git (April 20, 2005)

A couple of graphical git front ends (July 4, 2005)

Git approaches 1.0 (July 27, 2005)

Rebasing and merging: some git best practices (April 14, 2009)

Finding a patch's kernel version with git (June 16, 2010)

Git tree maintenance (October 29, 2013)

"git request-pull" and confusing diffstats (October 21, 2019)

Infrastructure

A kernel.org update (July 22, 2009)

KS2010: Kernel.org update (November 3, 2010)

Kernel development without kernel.org (September 13, 2011)

Where's that tree? (September 21, 2011)

The forest on the move (September 28, 2011)

Kernel.org's road to recovery (October 4, 2011)

KS2011: Kernel.org report (October 24, 2011)

A kernel.org update (October 29, 2013)

Kernel.org news: two-factor authentication and more (August 25, 2014)

Kernel debugging

The kernel lock validator (May 31, 2006)

Injecting faults into the kernel (November 14, 2006)

kmemcheck (November 27, 2007)

An object debugging infrastructure (March 3, 2008)

Bisection divides users and developers (April 15, 2008)

Netoops (November 10, 2010)

Displaying QR codes for kernel crashes (June 27, 2012)

Debugging ARM kernels using fast interrupts (May 29, 2014)

BPF-based error injection for the kernel (November 29, 2017)

A kernel debugger in Python: drgn (May 29, 2019)

Kernel tracing

Tracing infrastructures (September 19, 2006)

A generic tracing interface (September 19, 2007)

Tracing: no shortage of options (July 22, 2008)

Low-level tracing plumbing (September 30, 2008)

On the value of static tracepoints (April 28, 2009)

Dynamic probes with ftrace (July 28, 2009)

Fun with tracepoints (August 12, 2009)

TRACE_EVENT_ABI (September 30, 2009)

Debugging the kernel using Ftrace - part 1 (December 9, 2009)

Debugging the kernel using Ftrace - part 2 (December 22, 2009)

Using the TRACE_EVENT() macro (Part 1) (March 24, 2010)

Using the TRACE_EVENT() macro (Part 2) (March 31, 2010)

Using the TRACE_EVENT() macro (Part 3) (April 21, 2010)

ELC: Using LTTng (April 21, 2010)

One ring buffer to rule them all? (May 26, 2010)

trace-cmd: A front-end for Ftrace (October 20, 2010)

Conditional tracepoints (November 30, 2010)

Using KernelShark to analyze the real-time scheduler (February 2, 2011)

Ftrace, perf, and the tracing ABI (May 11, 2011)

LTTng rejection, next generation (December 14, 2011)

LTTng 2.0: Tracing for power users and developers - part 1 (April 11, 2012)

LTTng 2.0: Tracing for power users and developers - part 2 (April 18, 2012)

KS2012: Improving tracing and debugging (September 12, 2012)

Ktap — yet another kernel tracer (May 22, 2013)

Triggers for tracing (June 26, 2013)

Ktap almost gets into 3.13 (November 6, 2013)

Ktap or BPF? (April 23, 2014)

Ftrace: The hidden light switch (August 13, 2014)

Ftrace and histograms: a fork in the road (March 4, 2015)

KernelShark releases version 1.0 (July 31, 2019)

Unifying kernel tracing (October 30, 2019)

How to unbreak LTTng (April 20, 2020)

kgdb

kgdb getting closer to being merged? (February 20, 2008)

Merging kdb and kgdb (February 17, 2010)

Linux kernel memory model

Calibrating your fear of big bad optimizing compilers (October 11, 2019)

Concurrency bugs should fear the big bad data-race detector (part 1) (April 8, 2020)

Concurrency bugs should fear the big bad data-race detector (part 2) (April 14, 2020)

LLVM

LFCS: Building the kernel with Clang (May 4, 2011)

LFCS: The LLVMLinux project (May 7, 2013)

mmiotrace

Tracing memory-mapped I/O operations (February 26, 2008)

MMTests

Testing for kernel performance regressions (August 3, 2012)

Scheduler benchmarking with MMTests (May 19, 2020)

rt-app

Notes from the LPC scheduler microconference (September 18, 2017)

Rust

Supporting Linux kernel development in Rust (August 31, 2020)

Sparse

Finding kernel problems automatically (June 1, 2004)

Using sparse for endianness verification (October 25, 2006)

Sparse gets a maintainer (November 8, 2006)

Sparse: a look under the hood (June 8, 2016)

Static analysis

One year of Coverity work (August 20, 2014)

Static code checks for the kernel (April 13, 2016)

Smatch: pluggable static analysis for C (June 22, 2016)

Testing

Automated kernel testing (June 8, 2005)

Kernel test automation with LTP (December 17, 2014)

Kernel testing (November 4, 2015)

Memory-management testing (April 27, 2016)

Notes from Linaro Connect (March 15, 2017)

Stack and driver testing (March 22, 2017)

Filesystem test suites (June 13, 2018)

A kernel unit-testing framework (March 1, 2019)

How many kernel test frameworks? (June 5, 2019)

Defragmenting the kernel development process (September 14, 2019)

The 2019 Automated Testing Summit (November 13, 2019)

Preparing for the realtime future (September 9, 2020)

Trinity

KS2012: Regression testing (August 30, 2012)

LCA: The Trinity fuzz tester (February 6, 2013)

Two sessions on kernel testing (October 29, 2013)

Trinity and memory management testing (March 26, 2014)

Undertaker

Three talks on kernel development tools (October 22, 2014)

xfstests

Toward better testing (March 26, 2014)

devfs

The end of the devfs story (June 13, 2005)

The return of devfs (May 6, 2009)

Device drivers

Generic DMA pools (February 3, 2004)

The end of init_etherdev() and friends (March 2, 2004)

The new way of ioctl() (January 18, 2005)

NETIF_F_LLTX and race conditions (February 1, 2005)

HALs considered harmful (March 15, 2005)

RapidIO support for Linux (June 8, 2005)

ACPI, device interrupts, and suspend states (August 3, 2005)

ZONE_DMA32 (September 20, 2005)

Dynamic USB device IDs (November 21, 2005)

bcm43xx and the 802.11 stack (December 6, 2005)

The Novell Partner Linux Driver Process (May 17, 2006)

Device drivers and non-disclosure agreements (October 9, 2006)

KS2007: Hardware support and the i386/x86_64 merger (September 6, 2007)

Linux driver project gets a full-time leader (October 3, 2007)

Short subjects: kerneloops, read-mostly, and port 80 (December 18, 2007)

Merging drivers early (February 27, 2008)

A new suspend/hibernate infrastructure (March 19, 2008)

Why some drivers are not merged early (June 18, 2008)

LIRC delurks (September 10, 2008)

UKUUG: Arnd Bergmann on interconnecting with PCIe (November 19, 2008)

Kernel support for infrared receivers (December 2, 2009)

LCA: Graphics driver ponies (January 26, 2010)

The USB composite framework (July 14, 2010)

Shielding driver authors from locking (October 20, 2010)

Deferred driver probing (July 7, 2011)

The pin control subsystem (November 22, 2011)

Free user space for non-graphics drivers (June 3, 2020)

Asynchronous probing

Slow probing + udev + SIGKILL = trouble (September 9, 2014)

Device dependencies and deferred probing (November 3, 2015)

Block drivers

Cleaning up the block driver API (August 28, 2007)

A new block request completion API (January 29, 2008)

Block layer discard requests (August 12, 2008)

Block layer: solid-state storage, timeouts, affinity, and more (October 15, 2008)

Linux and 4K disk sectors (March 11, 2009)

Reworking disk events handling (January 19, 2011)

Stream IDs and I/O hints (May 4, 2016)

Firmware loading

Firmware loading and suspend/resume (August 15, 2012)

Udev and firmware (October 10, 2012)

Firmware signing (May 27, 2015)

Graphics

A line in the sand for graphics drivers (July 5, 2010)

Toward a unified display driver framework (September 20, 2011)

The Android Graphics microconference (October 9, 2013)

An update on the freedreno graphics driver (April 8, 2015)

Atomic mode setting design overview, part 1 (August 5, 2015)

Atomic mode setting design overview, part 2 (August 12, 2015)

Graphics world domination may be closer than it appears (October 18, 2016)

AMD's Display Core difficulties (December 13, 2016)

Industrial I/O

Ambient light sensors (June 2, 2010)

(Partially) graduating IIO (November 2, 2011)

Input

LCA: Rationalizing the wacom driver (February 1, 2011)

In user space

User-space device drivers (January 20, 2004)

Handling interrupts in user space (March 15, 2005)

Support for drivers in user space (September 4, 2006)

UIO: user-space drivers (May 2, 2007)

Character devices in user space (November 25, 2008)

Safe device assignment with VFIO (January 3, 2012)

Linux drivers in user space — a survey (October 19, 2016)

Network drivers

Large receive offload (August 1, 2007)

Network transmit batching (August 22, 2007)

e1000 v. e1000e (April 15, 2008)

e1000e and the joy of development kernels (September 24, 2008)

Char devices for network interfaces (October 14, 2009)

Accelerating netfilter with hardware offload, part 1 (January 14, 2020)

Accelerating netfilter with hardware offload, part 2 (January 31, 2020)

Nouveau

LCA: The state of the Nouveau project (January 17, 2007)

KS2009: Staging, linux-next, and the development process (October 21, 2009)

The abrupt merging of Nouveau (December 15, 2009)

Nouveau and interface compatibility (March 10, 2010)

Platform drivers

LinuxCon: x86 platform drivers (August 24, 2011)

Support APIs

A new I/O memory access mechanism (September 15, 2004)

PCI error recovery (July 12, 2005)

Driver core API changes for 2.6.19 (September 26, 2006)

API changes: interrupt handlers and vectored I/O (October 2, 2006)

Driver API: sleeping poll(), exclusive I/O memory, and DMA API debugging (November 24, 2008)

Writing a WMI driver - an introduction (June 8, 2010)

Contiguous memory allocation for drivers (July 21, 2010)

APIs for sensors (March 16, 2011)

The platform device API (June 21, 2011)

What are they polling for? (July 7, 2011)

Sharing buffers between devices (August 15, 2011)

DMA buffer sharing in 3.3 (January 11, 2012)

The Android ION memory allocator (February 8, 2012)

The trouble with DMA masks (March 20, 2013)

vm_iomap_memory() (April 17, 2013)

In search of the right RGB LED interface (May 25, 2016)

Semantics of MMIO mapping attributes across architectures (August 24, 2016)

Rethinking device memory allocation (October 19, 2016)

Shared memory mappings for devices (May 7, 2018)

IR decoding with BPF (July 9, 2018)

Device-to-device memory-transfer offload with P2PDMA (October 2, 2018)

Controlling device peer-to-peer access from user space (March 7, 2019)

Destaging ION (July 9, 2019)

DMA-BUF cache handling: Off the DMA API map (part 1) (June 4, 2020)

DMA-BUF cache handling: Off the DMA API map (part 2) (June 11, 2020)

Video

Memory management for graphics processors (November 6, 2007)

LPC: The future of Linux graphics (September 24, 2008)

Large I/O memory in small address spaces (November 4, 2008)

Video4Linux2

The Video4Linux2 API: an introduction (October 11, 2006)

Video4Linux2 part 2: registration and open() (October 18, 2006)

Video4Linux2 part 3: Basic ioctl() handling (October 30, 2006)

Video4Linux2 part 4: inputs and outputs (December 13, 2006)

Video4Linux2 part 5a: colors and formats (January 24, 2007)

Video4Linux2 part 5b: format negotiation (March 23, 2007)

Video4Linux2 part 6a: Basic frame I/O (May 18, 2007)

Video4Linux2 part 6b: Streaming I/O (July 5, 2007)

Video4Linux2 part 7: Controls (August 31, 2007)

Videobuf: buffer management for V4L2 drivers (November 23, 2009)

2.6.35 Video4Linux2 enhancements (May 25, 2010)

The videobuf2 API (June 14, 2011)

Hardware face detection (November 29, 2011)

Wireless networking

The ipw3945 project (March 1, 2006)

A new Intel wireless driver (February 20, 2007)

Regulating wireless devices (August 19, 2008)

Broadcom firmware and regulatory compliance (September 22, 2010)

Radar detection with Linux (December 21, 2010)

Broadcom's wireless drivers, one year later (August 29, 2011)

Device mapper

Kernel Summit: Multipath I/O (July 21, 2004)

Multipath support in the device mapper (February 23, 2005)

MD / DM (January 25, 2006)

Distributed storage (August 21, 2007)

Which I/O controller is the fairest of them all? (May 12, 2009)

Snapshot merge for the device mapper (November 24, 2009)

dm-verity (September 19, 2011)

Device model

Driver core functions: GPL only (September 29, 2004)

Some more 2.6.12 API changes (March 16, 2005)

Device model changes in store (March 22, 2005)

A big set of driver core changes (June 21, 2005)

Nested classes (October 5, 2005)

Sysfs and a stable kernel ABI (February 22, 2006)

Driver core API changes for 2.6.19 (September 26, 2006)

Toward a safer sysfs (April 9, 2007)

A fresh look at the kernel's device model (May 27, 2015)

A tour of /sys/devices (June 3, 2015)

Device naming

Lots of SCSI disks (March 16, 2004)

A new device naming scheme (April 6, 2004)

User-friendly disk names (June 22, 2011)

Reverting disk aliases? (November 16, 2011)

Device numbers

The future of device numbers (January 6, 2004)

A unified device number allocator (March 8, 2005)

Devicescape stack

The 2006 Wireless Networking Summit (April 10, 2006)

Kernel Summit 2006: Mini-summit summaries (July 18, 2006)

Toward a free Atheros driver (November 15, 2006)

A new Intel wireless driver (February 20, 2007)

Device tree

KS2009: Generic device trees (October 19, 2009)

ELCE: Grant Likely on device trees (November 10, 2010)

Dynamic devices and static configuration (March 29, 2011)

Platform devices and device trees (June 21, 2011)

The udev tail wags the dog (August 24, 2011)

Supporting multi-platform ARM kernels (May 9, 2012)

Device tree troubles (July 24, 2013)

Device trees as ABI (July 30, 2013)

Device tree bindings (October 29, 2013)

Device trees I: Are we having fun yet? (November 12, 2013)

Device trees II: The harder parts (November 18, 2013)

Device tree overlays (October 22, 2014)

An alternative device-tree source language (August 9, 2017)

Device-tree schemas (November 14, 2018)

/dev/kmem

Who needs /dev/kmem? (August 16, 2005)

User-space software suspend (September 26, 2005)

A software suspend decision point (November 16, 2005)

Direct memory access

Generic DMA pools (February 3, 2004)

The DMA API changes (March 15, 2004)

A handful of DMA topics (June 23, 2004)

DMA issues, part 2 (June 30, 2004)

Kernel Summit 2005: I/O Busses (July 19, 2005)

ZONE_DMA32 (September 20, 2005)

Memory copies in hardware (December 7, 2005)

Kernel Summit 2006: DMA and IOMMU issues (July 19, 2006)

The chained scatterlist API (October 29, 2007)

Rationalizing scatter/gather chains (December 28, 2007)

A better DMA memory allocator (March 10, 2008)

Driver API: sleeping poll(), exclusive I/O memory, and DMA API debugging (November 24, 2008)

ARM, DMA, and memory management (April 27, 2011)

A reworked contiguous memory allocator (June 14, 2011)

CMA and ARM (July 5, 2011)

Reworking the DMA mapping code (especially on ARM) (November 16, 2011)

DMA buffer sharing in 3.3 (January 11, 2012)

The trouble with DMA masks (March 20, 2013)

Goodbye to GFP_TEMPORARY and dma_alloc_noncoherent() (August 28, 2017)

Bounce buffers for untrusted devices (April 26, 2019)

Destaging ION (July 9, 2019)

DMA-BUF cache handling: Off the DMA API map (part 1) (June 4, 2020)

DMA-BUF cache handling: Off the DMA API map (part 2) (June 11, 2020)

dir_notify()

file_operations method

The end of the fcntl() method (August 18, 2004)

dirreadahead()

Two paths to a better readdir() (July 30, 2014)

Distributed lock management

Clusters and distributed lock management (May 18, 2005)

Merging GFS2 (September 7, 2005)

Distributions

SCALE 8x: Ubuntu kernel development process (March 3, 2010)

Kernel configuration for distributions (July 18, 2012)

Analyzing the patchiness of vendor kernels (April 6, 2016)

dma_declare_coherent_memory()

DMA issues, part 2 (June 30, 2004)

dma_get_required_mask()

A handful of DMA topics (June 23, 2004)

DMTCP

Checkpoint/restart: it's complicated (November 9, 2010)

Preparing for user-space checkpoint/restore (January 31, 2012)

Dnotify

Filesystem notification, part 1: An overview of dnotify and inotify (July 9, 2014)

Documentation

Kernel Summit 2006: Documentation (July 18, 2006)

Kevents and review of new APIs (August 23, 2006)

KS2008: Documentation (September 17, 2008)

In search of the perfect changelog (April 22, 2009)

Better documentation: the window of naive interest (July 3, 2012)

Kernel documentation (November 4, 2015)

The present and future of formatted kernel documentation (January 13, 2016)

Kernel documentation with Sphinx, part 1: how we got here (July 6, 2016)

Kernel documentation with Sphinx, part 2: how it works (July 13, 2016)

A report from the documentation maintainer (October 26, 2016)

Kernel documentation update (November 2, 2016)

Toward a kernel maintainer's guide (November 26, 2018)

How to contribute to kernel documentation (January 23, 2020)

Dracut

Dracut looks to replace the initramfs patchwork (February 4, 2009)

DRBD

DRBD: a distributed block device (April 22, 2009)

drop_caches

A survey of memory management patches (August 6, 2013)

Dynamic frequency selection

Radar detection with Linux (December 21, 2010)

Dynamic tick

Clockevents and dyntick (February 21, 2007)

Deferrable timers (March 28, 2007)

NoHZ tasks (December 20, 2010)

Relocating RCU callbacks (October 31, 2012)

(Nearly) full tickless operation in 3.10 (May 8, 2013)

Is the whole system idle? (July 10, 2013)

Dropping the timer tick — for real this time (October 7, 2015)

EDAC

The 2.6.16 straggler list (January 24, 2006)

EISA

Dropping x86 EISA support (January 21, 2015)

Elevator

Modular, switchable I/O schedulers (September 21, 2004)

Into the ABISS (November 9, 2004)

Which is the fairest I/O scheduler of them all? (December 8, 2004)

Some block layer patches (October 26, 2005)

Variations on fair I/O schedulers (December 3, 2008)

An IOPS-based I/O scheduler (January 4, 2012)

The BFQ I/O scheduler (June 11, 2014)

Embedded systems

Kernel Summit 2006: Embedded systems (July 19, 2006)

Reviving linux-tiny (September 26, 2007)

ELC: Morton and Saxena on working with the kernel community (April 21, 2008)

An interview with the new embedded maintainers (June 4, 2008)

Wakelocks and the embedded problem (February 10, 2009)

SamyGO: replacing television firmware (November 14, 2009)

ELC: Status of embedded Linux (April 14, 2010)

Networking on tiny machines (May 7, 2014)

Kernel tinification (August 20, 2014)

Splicing out syscalls for tiny kernels (December 3, 2014)

Linux as a single-user system (February 4, 2015)

An alternative TTY layer (April 27, 2017)

Shrinking the scheduler (June 14, 2017)

Shrinking the kernel with link-time garbage collection (December 15, 2017)

Shrinking the kernel with an axe (February 8, 2018)

Shrinking the kernel with a hammer (March 2, 2018)

Epoll

EPOLL_CTL_DISABLE and multithreaded applications (October 17, 2012)

EPOLL_CTL_DISABLE, epoll, and API design (October 23, 2012)

Epoll evolving (February 16, 2015)

Issues with epoll() (March 23, 2015)

A ring buffer for epoll (May 30, 2019)

Error codes

-EWHICHERROR? (June 29, 2011)

Extended system call error reporting (September 16, 2015)

eventfs

Kernel events without kevents (March 13, 2007)

Events reporting

A kernel events layer (July 27, 2004)

Figuring out kernel event reporting (September 8, 2004)

Watching filesystem events with inotify (September 29, 2004)

Coming in 2.6.10 (October 20, 2004)

More hooks for kernel events (February 9, 2005)

Extending netlink (April 12, 2005)

Dealing with disk I/O problems (June 21, 2005)

The kevent interface (February 22, 2006)

OLS: A proposal for a new networking API (July 22, 2006)

Toward a kernel events interface (August 1, 2006)

Kevent take 26 (December 12, 2006)

The return of kevent? (May 8, 2007)

The return of syslets (May 30, 2007)

vringfd() (April 7, 2008)

A kernel event notification mechanism (July 25, 2018)

Generalized events notification and security policies (June 11, 2019)

exec()

How programs get run (January 28, 2015)

How programs get run: ELF binaries (February 4, 2015)

execns()

execns() (July 11, 2006)

Execute in place

Kernel Summit: kexec and fast booting (July 21, 2004)

Execute-in-place (May 11, 2005)

EXPORT_SYMBOL_GPL

On the value of EXPORT_SYMBOL_GPL (October 5, 2005)

EXPORT_SYMBOL_GPL_FUTURE() (February 13, 2006)

Questioning EXPORT_SYMBOL_GPL() (June 23, 2014)

The proper use of EXPORT_SYMBOL_GPL() (October 27, 2018)

ext3

ext3 block reservation (April 20, 2004)

Which filesystem for Samba4? (November 23, 2004)

Ext3 for large filesystems (June 12, 2006)

Time for ext4? (June 12, 2006)

Benchmark comparing with reiser4

Looking at reiser4 (August 25, 2004)

Ext4

Time for ext4 (July 5, 2006)

Secure deletion and trash bin support (December 5, 2006)

ext4 and data loss (March 11, 2009)

Securely deleting files from ext4 filesystems (October 11, 2011)

Improving ext4: bigalloc, inline data, and metadata checksums (November 29, 2011)

Uninitialized blocks and unexpected flags (November 28, 2012)

A FALLOC_FL_NO_HIDE_STALE followup (December 5, 2012)

Widening ext4's readdir() cookie (March 27, 2013)

Encrypted file backup for ext4 (December 16, 2015)

Externsible firmware interface

The Extensible Firmware Interface - an introduction (August 9, 2011)

fallocate()

fallocate() (March 19, 2007)

The ongoing fallocate() story (July 3, 2007)

Punching holes in files (November 17, 2010)

Allocating uninitialized file blocks (April 17, 2012)

Volatile ranges with fallocate() (June 5, 2012)

Uninitialized blocks and unexpected flags (November 28, 2012)

A FALLOC_FL_NO_HIDE_STALE followup (December 5, 2012)

Finding the proper scope of a file collapse operation (March 5, 2014)

Inserting a hole into a file (January 21, 2015)

Blurred boundaries in the storage stack (March 24, 2016)

fallocate() and the block layer (April 27, 2016)

fanotify

The fanotify API (July 1, 2009)

In Brief (July 29, 2009)

Another new ABI for fanotify (November 11, 2009)

No fanotify for 2.6.36 (October 12, 2010)

Superblock watch for fsnotify (April 5, 2017)

Fast booting

Kernel Summit: kexec and fast booting (July 21, 2004)

LPC: Booting Linux in five seconds (September 22, 2008)

An asynchronous function call infrastructure (January 13, 2009)

fast_gup()

Toward better direct I/O scalability (March 31, 2008)

The lockless page cache (July 29, 2008)

fault()

Faulting out populate(), nopfn(), and nopage() (October 10, 2006)

fault() (July 23, 2007)

Fault injection

Injecting faults into the kernel (November 14, 2006)

BPF-based error injection for the kernel (November 29, 2017)

Fault tolerance

HWPOISON (August 26, 2009)

Hotplugging and poisoning (May 3, 2018)

fcntl() method

A new file_operations method (March 24, 2004)

The end of the fcntl() method (August 18, 2004)

Fibrils

Fibrils and asynchronous system calls (January 31, 2007)

Kernel fibrillation (February 6, 2007)

Alternatives to fibrils (February 13, 2007)

FIEMAP ioctl()

SEEK_HOLE or FIEMAP? (December 3, 2007)

Making FIEMAP and delayed allocation play well together (February 22, 2011)

The return of SEEK_HOLE (April 26, 2011)

File descriptors

Fun with file descriptors (June 4, 2007)

More fun with file descriptors (June 12, 2007)

File handle

Open by handle (February 23, 2010)

Filesystems

pramfs - a new filesystem (March 3, 2004)

Trapfs - an automounter on the cheap (November 3, 2004)

Debugfs (December 13, 2004)

The mini_fo filesystem (May 10, 2005)

A filesystem from Plan 9 space (May 25, 2005)

Files with negative offsets (May 31, 2005)

Coming soon: eCryptfs (October 25, 2005)

Shared subtrees (November 8, 2005)

KHB: A Filesystems reading list (August 21, 2006)

Secure deletion and trash bin support (December 5, 2006)

SEEK_HOLE or FIEMAP? (December 3, 2007)

What's AdvFS good for? (June 25, 2008)

Freezing filesystems and containers (June 25, 2008)

KS2008: Filesystem and block layer interaction (September 16, 2008)

A superficial introduction to fsblock (March 11, 2009)

That massive filesystem thread (March 31, 2009)

The two sides of reflink() (May 5, 2009)

This week's reflink() API (May 19, 2009)

Avoiding a read-only filesystem on errors (June 17, 2009)

Protected RAMFS (June 24, 2009)

Soft updates, hard problems (July 1, 2009)

O_*SYNC (September 1, 2009)

POSIX v. reality: A position on O_PONIES (September 9, 2009)

Featherstitch: Killing fsync() softly (September 30, 2009)

File holes, races, and mmap() (October 21, 2009)

LCA: Why filesystems are hard (January 20, 2010)

One billion files on Linux (August 18, 2010)

The return of SEEK_HOLE (April 26, 2011)

Runtime filesystem consistency checking (April 3, 2012)

O_HOT and O_COLD (April 24, 2012)

LSFMM: Range locking (May 1, 2013)

Two paths to a better readdir() (July 30, 2014)

Filesystem defragmentation (March 23, 2015)

UID/GID identity and filesystems (March 23, 2015)

Trading off safety and performance in the kernel (May 12, 2015)

Heading toward 2038-safe filesystems (January 21, 2016)

A case for variant symlinks (March 23, 2016)

Exposing extent information to user space (May 4, 2016)

Online filesystem scrubbing and repair (April 5, 2017)

Filesystem management interfaces (April 5, 2017)

Filesystem metadata memory management (April 24, 2018)

A filesystem "change journal" and other topics (June 4, 2018)

Implementing fully immutable files (April 19, 2019)

Filesystems for zoned block devices (May 21, 2019)

Filesystems and crash resistance (May 21, 2019)

Lazy file reflink (May 22, 2019)

Accessing zoned block devices with zonefs (July 23, 2019)

On-disk format robustness requirements for new filesystems (August 19, 2019)

Filesystem sandboxing with eBPF (November 6, 2019)

Access-time tracking

Once upon atime (August 8, 2007)

File creation times (July 26, 2010)

Deferring mtime and ctime updates (August 21, 2013)

Introducing lazytime (November 19, 2014)

Lazytime hits a snag (February 25, 2015)

autofs

Fixing the unfixable autofs ABI (April 30, 2012)

bcachefs

The bcachefs filesystem (August 25, 2015)

An update on bcachefs (May 23, 2018)

Bcachefs gets closer (July 11, 2019)

Benchmarking

Kernel Hacker's Bookshelf: Generating Realistic Impressions for File-System Benchmarking (April 28, 2010)

Btrfs

btrfs and NILFS (June 19, 2007)

A better btrfs (January 15, 2008)

Btrfs to the mainline? (October 8, 2008)

Btrfs aims for the mainline (January 7, 2009)

A short history of btrfs (July 22, 2009)

JLS2009: A Btrfs update (October 27, 2009)

Supporting transactions in btrfs (November 11, 2009)

MeeGo and Btrfs (May 11, 2010)

Btrfs: broken by design? (June 22, 2010)

Data temperature in Btrfs (August 3, 2010)

A btrfs update at LinuxCon Europe (November 2, 2011)

Atime and btrfs: a bad combination? (May 31, 2012)

Btrfs send/receive (July 11, 2012)

LSFMM: Btrfs: "are we there yet?" (May 1, 2013)

The Btrfs filesystem: An introduction (December 11, 2013)

Btrfs: Getting started (December 17, 2013)

Btrfs: Working with multiple devices (December 30, 2013)

Btrfs: Subvolumes and snapshots (January 6, 2014)

Btrfs: Send/receive and ioctl() (January 22, 2014)

CoreOS looks to move from Btrfs to overlayfs (December 24, 2014)

In-band deduplication for Btrfs (March 9, 2016)

Btrfs and high-speed devices (August 24, 2016)

Adding encryption to Btrfs (September 21, 2016)

Authenticated Btrfs (April 30, 2020)

Btrfs at Facebook (July 2, 2020)

Case-independent lookups

The kernel and character set encodings (February 18, 2004)

Case-insensitive filesystem lookups (May 23, 2018)

Filesystems and case-insensitivity (November 28, 2018)

Case-insensitive ext4 (March 27, 2019)

Ceph

The Ceph filesystem (November 14, 2007)

Two that didn't make it (December 22, 2009)

LSFMM: FUSE and cloud storage (April 24, 2013)

Chunkfs

Filesystems: chunkfs and reiser4 (April 24, 2007)

What ever happened to chunkfs? (June 17, 2009)

Cluster

Should the Lustre preparation patches go in? (June 9, 2004)

The OCFS2 filesystem (May 24, 2005)

Time to merge GFS? (August 10, 2005)

Merging GFS2 (September 7, 2005)

A look inside the OCFS2 filesystem (September 1, 2010)

Compressed

Squashfs submitted for the mainline (October 29, 2008)

COW links

COW Links (March 29, 2004)

exFAT

The exfiltrated exFAT driver (July 24, 2013)

Examining exFAT (August 30, 2019)

ext3

ext3 block reservation (April 20, 2004)

Online resizing of ext3 filesystems (June 15, 2004)

Ext3 for large filesystems (June 12, 2006)

Time for ext4? (June 12, 2006)

A nasty file corruption bug - fixed (December 31, 2006)

ext3 metaclustering (January 16, 2008)

Barriers and journaling filesystems (May 21, 2008)

Solving the ext3 latency problem (April 14, 2009)

Ext3 and RAID: silent data killers? (August 31, 2009)

The Next3 filesystem (May 11, 2010)

rm -r fs/ext3 (July 21, 2015)

ext4

Time for ext4 (July 5, 2006)

Secure deletion and trash bin support (December 5, 2006)

A better ext4 (January 23, 2008)

Responding to ext4 journal corruption (May 27, 2008)

Online defragmentation for ext4 (February 4, 2009)

Removing ext2 and/or ext3 (February 9, 2011)

Ext4 snapshot concerns (June 8, 2011)

Securely deleting files from ext4 filesystems (October 11, 2011)

Improving ext4: bigalloc, inline data, and metadata checksums (November 29, 2011)

Supporting block I/O contexts (June 18, 2012)

A kernel change breaks GlusterFS (March 27, 2013)

Widening ext4's readdir() cookie (March 27, 2013)

Transparent decompression for ext4 (July 31, 2013)

Ext4 encryption (April 8, 2015)

A tale of two data-corruption bugs (May 24, 2015)

Encrypted file backup for ext4 (December 16, 2015)

Huge pages in the ext4 filesystem (March 28, 2017)

Evolving ext4 for SMR drives (April 19, 2017)

Case-insensitive ext4 (March 27, 2019)

Extended attributes

On reiserfs and external attributes (April 28, 2004)

Which filesystem for Samba4? (November 23, 2004)

Federated filesystem

LSFMM: FedFS (May 1, 2013)

File sealing

Sealed files (April 9, 2014)

Flash

LogFS (May 15, 2007)

UBIFS (April 2, 2008)

Block layer discard requests (August 12, 2008)

AXFS: a compressed, execute-in-place filesystem (August 26, 2008)

On the need for a new removable device filesystem (August 22, 2012)

An f2fs teardown (October 10, 2012)

A NILFS2 score card (November 7, 2012)

JFFS2, UBIFS, and the growth of flash storage (December 11, 2012)

Flash storage topics (June 6, 2018)

Supporting the UFS turbo-write mode (May 20, 2019)

fs-verity

File-level integrity (April 27, 2018)

Protecting files with fs-verity (August 30, 2018)

A setback for fs-verity (January 3, 2019)

Yet another try for fs-verity (June 3, 2019)

Fuzzing

Filesystem fuzzing (March 18, 2015)

GlusterFS

An introduction to GlusterFS (March 25, 2015)

InterMezzo

Goodbye to old code (May 19, 2004)

In user space

FUSE - implementing filesystems in user space (January 27, 2004)

Should FUSE be merged? (November 23, 2004)

FUSE hits a snag (April 12, 2005)

FUSE and private namespaces (April 27, 2005)

LSFMM: FUSE and cloud storage (April 24, 2013)

LSFMM: Coprocessors, exit times, and volatile ranges, and more (April 23, 2013)

Log-structured

Log-structured file systems: There's one in every SSD (September 18, 2009)

Lustre

Will staging lose its Lustre? (June 6, 2018)

Mounting

Unprivileged mounts (January 15, 2008)

Read-only bind mounts (May 6, 2008)

User and group mount options for ext filesystems (May 16, 2012)

Mount point removal and renaming (October 16, 2013)

A new API for mounting filesystems (April 2, 2017)

A new API for mounting filesystems (May 4, 2018)

Six (or seven) new system calls for filesystem mounting (July 12, 2018)

The mismatched mount mess (August 10, 2018)

configfd() and shifting bind mounts (January 10, 2020)

Named stream support

More notes on reiser4 (September 1, 2004)

Network

CRFS and POHMELFS (February 6, 2008)

Open by handle (February 23, 2010)

POHMELFS returns (February 8, 2012)

Network filesystem topics (May 4, 2016)

Network filesystem cache-management interfaces (March 29, 2017)

A network filesystem wish list (April 5, 2017)

Network filesystem topics (May 21, 2018)

SMB/CIFS compounding support (May 22, 2018)

NFS

LSFMM: NFS status (May 1, 2013)

Loopback NFS: theory and practice (April 23, 2014)

NFS performance (March 23, 2015)

NFS topics (May 14, 2019)

Common needs for Samba and NFS (May 15, 2019)

Nonvolatile memory

The NOVA filesystem (August 4, 2017)

The NOVA filesystem (May 18, 2018)

The ZUFS zero-copy filesystem (June 6, 2018)

Taking ZUFS upstream (May 8, 2019)

OrangeFS

The OrangeFS distributed filesystem (May 6, 2015)

osdfs

Linux and object storage devices (November 4, 2008)

POSIX locks

File-private POSIX locks (February 19, 2014)

Optional mandatory locking (December 9, 2015)

shiftfs

Container-aware filesystems (April 3, 2017)

Filesystem UID mapping for user namespaces: yet another shiftfs (February 17, 2020)

stat()

xstat() and fxstat() (June 30, 2010)

task_diag and statx() (May 4, 2016)

xstat() (May 4, 2016)

statx() v3 (November 30, 2016)

Symbolic link depth

Supporting deeper symbolic links (June 30, 2004)

Tux3

Tux3: the other next-generation filesystem (December 2, 2008)

Tux3 posted for review (May 21, 2014)

Union

Unionfs (January 10, 2007)

State of the unionfs (January 15, 2008)

Unifying filesystems with union mounts (December 24, 2008)

Unioning file systems: Architecture, features, and design choices (March 18, 2009)

Union file systems: Implementations, part I (March 25, 2009)

Unioning file systems: Implementations, part 2 (April 7, 2009)

A brief history of union mounts (July 14, 2010)

Another union filesystem approach (September 1, 2010)

Debating overlayfs (June 15, 2011)

Overlayfs for 3.10 (March 13, 2013)

CoreOS looks to move from Btrfs to overlayfs (December 24, 2014)

Overlayfs issues and experiences (March 17, 2015)

Sharing pages between mappings (March 26, 2017)

Overlayfs features (March 29, 2017)

Virtual filesystem layer

Kernel Summit 2005: Virtual filesystem topics (July 19, 2005)

Kernel Summit 2006: The VFS layer (July 19, 2006)

Some VFS address space operations changes (October 17, 2007)

A new way to truncate() files (July 15, 2009)

JLS: Increasing VFS scalability (November 3, 2009)

Big reader locks (March 16, 2010)

VFS scalability patches in 2.6.36 (August 24, 2010)

Resolving the inode scalability discussion (October 26, 2010)

Dcache scalability and RCU-walk (December 14, 2010)

Toward a safer fput() (April 24, 2012)

VFS hot-data tracking (November 20, 2012)

Virtual filesystem layer changes, past and future (March 16, 2015)

Pathname lookup in Linux (June 24, 2015)

RCU-walk: faster pathname lookup in Linux (July 1, 2015)

A walk among the symlinks (July 14, 2015)

An in-kernel file loading interface (February 17, 2016)

VFS parallel lookups (April 27, 2016)

Parallel pathname lookups and the importance of testing (June 29, 2016)

Restricting pathname resolution with AT_NO_JUMPS (May 17, 2017)

Messiness in removing directories (June 13, 2018)

New AT_ flags for restricting pathname lookup (October 4, 2018)

io_uring, SCM_RIGHTS, and reference-count cycles (February 13, 2019)

Restricting path name lookup with openat2() (August 22, 2019)

O_MAYEXEC — explicitly opening files for execution (May 11, 2020)

Virtualization

A filesystem for virtualization (May 14, 2019)

Workshops

Linux Storage and Filesystem workshop, day 1 (April 7, 2009)

Linux Storage and Filesystem Workshop, day 2 (April 8, 2009)

The 2010 Linux Storage and Filesystem Summit, day 1 (August 9, 2010)

The 2010 Linux Storage and Filesystem Summit, day 2 (August 10, 2010)

Linux Filesystem, Storage, and Memory Management Summit, Day 1 (April 5, 2011)

Linux Filesystem, Storage, and Memory Management Summit, Day 2 (April 6, 2011)

XFS

XFS: the filesystem of the future? (January 20, 2012)

XFS: There and back ... and there again? (April 1, 2015)

New tricks for XFS (February 21, 2018)

XFS parent pointers (May 7, 2018)

XFS online filesystem scrubbing and repair (May 16, 2018)

XFS, LSM, and low-level management APIs (October 2, 2018)

Atomic extent swapping for XFS (May 1, 2020)

File Systems Workshop

2006

The 2006 Linux File Systems Workshop (July 5, 2006)

Filtered wakeups

Filtered wakeups (May 5, 2004)

fincore()

fincore() (January 27, 2010)

Firmware

The kernel and binary firmware (April 6, 2005)

Using the firmware loader for static data (May 28, 2008)

Moving the firmware out (June 4, 2008)

KS2010: Lightning talks (November 2, 2010)

The trouble with firmware (January 5, 2011)

Firmware loading and suspend/resume (August 15, 2012)

Udev and firmware (October 10, 2012)

Firmware signing (May 27, 2015)

The Sound Open Firmware project launches (March 21, 2018)

Fistgen

Recent patches of interest (August 4, 2004)

Flexible array

Flexible arrays (August 5, 2009)

flink()

flink() at last? (August 7, 2013)

flink() flunks (August 28, 2013)

Forced unmount

revoke() and frevoke() (July 25, 2006)

Hotplug file descriptors and revoke() (April 14, 2009)

Fork bombs

Defending against fork bombs (May 3, 2005)

Fighting fork bombs (March 29, 2011)

fsblock

Large pages, large blocks, and large problems (September 19, 2007)

A superficial introduction to fsblock (March 11, 2009)

Various page cache issues (March 26, 2014)

FS-Cache

Credential records (September 25, 2007)

Justifying FS-Cache (December 24, 2008)

Ftrace

The source of the e1000e corruption bug (October 21, 2008)

Speeding up ftrace printing (March 4, 2009)

A look at ftrace (March 13, 2009)

On the value of static tracepoints (April 28, 2009)

Seccomp and sandboxing (May 13, 2009)

Dynamic probes with ftrace (July 28, 2009)

Debugging the kernel using Ftrace - part 1 (December 9, 2009)

Debugging the kernel using Ftrace - part 2 (December 22, 2009)

Secrets of the Ftrace function tracer (January 20, 2010)

trace-cmd: A front-end for Ftrace (October 20, 2010)

Using KernelShark to analyze the real-time scheduler (February 2, 2011)

Ftrace, perf, and the tracing ABI (May 11, 2011)

Triggers for tracing (June 26, 2013)

Ftrace: The hidden light switch (August 13, 2014)

Ftrace and histograms: a fork in the road (March 4, 2015)

KernelShark releases version 1.0 (July 31, 2019)

Accurate timestamps for the ftrace ring buffer (September 22, 2020)

FUSYN

FUSYNs - robust user-space synchronization primitives (January 21, 2004)

Futex

FUTEX + rwsem = SNAFU (February 23, 2005)

Robust futexes - a new approach (February 15, 2006)

Priority inheritance in the kernel (April 3, 2006)

A futex overview and update (November 11, 2009)

Adaptive spinning futexes (May 11, 2010)

In pursuit of faster futexes (May 4, 2016)

Adaptive mutexes in user space (November 2, 2016)

Rethinking the futex API (June 18, 2020)

GCC

Shrinking the kernel with gcc (January 21, 2004)

The end of gcc 2.95 support (December 13, 2005)

GCC 4.3.0 exposes a kernel bug (March 7, 2008)

Better kernels with GCC plugins (October 5, 2011)

Betrayed by a bitfield (February 1, 2012)

Signed overflow optimization hazards in the kernel (August 15, 2012)

Rethinking optimization for size (January 30, 2013)

General-purpose I/O

GPIO in the kernel: an introduction (January 16, 2013)

GPIO in the kernel: future directions (January 23, 2013)

get_user_inatomic()

FUTEX + rwsem = SNAFU (February 23, 2005)

get_vaddr_frames()

4.3 Merge window, part 3 (September 14, 2015)

gfp_t

Introducing gfp_t (October 11, 2005)

Avoiding memory-allocation deadlocks (April 16, 2014)

Understanding __GFP_FS (April 30, 2014)

GFS

Kernel Summit: Clustered storage (July 21, 2004)

Time to merge GFS? (August 10, 2005)

Merging GFS2 (September 7, 2005)

Git

The guts of git (April 12, 2005)

A very quick guide to starting with git (April 20, 2005)

Git approaches 1.0 (July 27, 2005)

Bisection divides users and developers (April 15, 2008)

How patches get into the mainline (February 10, 2009)

Rebasing and merging: some git best practices (April 14, 2009)

How old is our kernel? (February 17, 2010)

Finding a patch's kernel version with git (June 16, 2010)

Authenticating Git pull requests (November 9, 2011)

Rebasing and merging in kernel repositories (June 18, 2019)

GmailFS

GmailFS - using Gmail as a filesystem (August 30, 2004)

Goldman Sachs

Kernel Summit: The customer panel (July 21, 2004)

Google

KS2009: How Google uses Linux (October 21, 2009)

GPIO

GPIO in the kernel: an introduction (January 16, 2013)

GPIO in the kernel: future directions (January 23, 2013)

Grand Unified Flow Cache

The Grand Unified Flow Cache (August 7, 2006)

Graphics Execution Manager (GEM)

GEM v. TTM (May 28, 2008)

Greybus

Greybus (June 17, 2015)

Greybus (March 1, 2017)

Group scheduling

CFS group scheduling (July 2, 2007)

TTY-based group scheduling (November 17, 2010)

Group scheduling and alternatives (December 6, 2010)

CFS bandwidth control (February 16, 2011)

A group scheduling demonstration (March 16, 2011)

grsecurity

The future for grsecurity (January 7, 2009)

Post-init read-only memory (December 2, 2015)

Hardware abstraction layers

HALs considered harmful (March 15, 2005)

Hashing functions

Generic hashing functions and the platform problem (May 18, 2016)

SipHash in the kernel (January 10, 2017)

Hash table

A generic hash table (August 8, 2012)

Relativistic hash tables, part 1: Algorithms (September 17, 2014)

Relativistic hash tables, part 2: Implementation (September 17, 2014)

The rhashtable documentation I wanted to read (April 13, 2018)

Rhashtables: under the hood (April 21, 2018)

Head Bubba

KS2007: The customer panel (September 8, 2007)

HostAP

Toward a generic wireless access point stack (June 9, 2004)

Hotplug

Safe PCI hot removal (June 9, 2004)

Configuration of pluggable network adaptors (September 22, 2004)

Rationalizing CPU hotplugging (February 12, 2013)

Optimizing CPU hotplug locking (October 9, 2013)

Revisiting CPU hotplug locking (October 16, 2013)

Braking CPU hotplug (May 14, 2014)

The modernization of PCIe hotplug in Linux (October 8, 2018)

Memory

Fragmentation avoidance (November 2, 2005)

More on fragmentation avoidance (November 8, 2005)

VM followup: page migration and fragmentation avoidance (November 16, 2005)

Short topics in memory management (March 6, 2007)

Plans for hot adding and removing memory (June 12, 2013)

Hotplugging and poisoning (May 3, 2018)

hrtimer

The high-resolution timer API (January 16, 2006)

Clockevents and dyntick (February 21, 2007)

High- (but not too high-) resolution timeouts (September 2, 2008)

Greedy hrtimer expiration (October 4, 2011)

Short sleeps suffering from slack (February 17, 2012)

Leaping seconds and looping servers (July 2, 2012)

Huge pages

Fragmentation avoidance (November 2, 2005)

Application-friendly kernel interfaces (March 26, 2007)

Large pages, large blocks, and large problems (September 19, 2007)

Transparent hugepages (October 28, 2009)

Huge pages part 1 (Introduction) (February 16, 2010)

Huge pages part 2: Interfaces (February 24, 2010)

Huge pages part 3: Administration (March 3, 2010)

Huge pages part 4: benchmarking with huge pages (March 17, 2010)

Huge pages part 5: A deeper look at TLBs and costs (March 23, 2010)

Memory management for virtualization (April 7, 2010)

Transparent huge pages in 2.6.38 (January 19, 2011)

Huge pages, slow drives, and long delays (November 14, 2011)

Adding a huge zero page (September 26, 2012)

Supporting variable-sized huge pages (January 23, 2013)

A survey of memory management patches (August 6, 2013)

Huge page issues (March 26, 2014)

Transparent huge page reference counting (November 11, 2014)

Improving huge page handling (March 11, 2015)

Two transparent huge page cache implementations (April 20, 2016)

Transparent huge pages in the page cache (May 11, 2016)

Huge pages in the ext4 filesystem (March 28, 2017)

Transparent huge pages for filesystems (May 22, 2019)

hugetlbfs

Huge pages part 1 (Introduction) (February 16, 2010)

HWPOISON

HWPOISON (August 26, 2009)

Hotplugging and poisoning (May 3, 2018)

Hyperthreading

Is hyperthreading dangerous? (May 17, 2005)

HZ

Boot-time clock frequency selection (December 14, 2004)

How fast should HZ be? (August 2, 2005)

NoHZ tasks (December 20, 2010)

ia32e

Intel's new 64-bit architecture and Linux (February 25, 2004)

IDA

IDA: simplifying the complex task of allocating integers (September 4, 2018)

idr

idr - integer ID management (September 22, 2004)

A simplified IDR API (February 6, 2013)

Tags and IDs (June 19, 2013)

in_atomic()

Atomic context and kernel API design (March 25, 2008)

Include files

Kernel headers and user space (November 30, 2004)

The UAPI header file split (July 25, 2012)

Unscheduled maintenance for sched.h (February 8, 2017)

indirect()

sys_indirect() (November 19, 2007)

System call updates: indirect(), timerfd(), and hijack() (November 28, 2007)

Extending system calls (May 14, 2008)

Industrial I/