Uh-oh, It's I/O Ordering!
summary
Explains Linux I/O ordering rules with concrete litmus tests (store‑buffering ran on x86 and ran litmus tests 10 million times showing all four outcomes), maps which APIs enforce completion versus mere ordering, and where code needs explicit barriers. Shows default readl/writel drain store buffers and cost performance; relaxed variants keep per-endpoint order but not completion; dma_rmb orders DMA reads cheaply so use dma_rmb for coherent rings. Finds real kernel bugs, supplies patches and practical per-driver examples.
AI-written summary · about
chapters (12)
- 0:00Introduction to concurrency
- 1:26Store buffering example
- 4:20Sequential consistency
- 7:59Litmus tests and memory models
- 10:52Beyond shared memory
- 13:42Ordering vs completion
- 15:30Linux IO access APIs
- 20:13Relaxed IO accesses
- 21:37Mandatory memory barriers
- 22:56DMA specific barriers
- 23:50Real-world driver examples
- 32:39Q&A and conclusion
related talks
15mOPIMQ: Order Preserving IO stack for Multi-Queue Block Device
47mLinux on POWER Driver Porting, Optimization, and Test
59mThe Wild West of post-POSIX IO Interfaces
45mLinux Storage Stack Explained
37mIndustrial IO and You- Nonsense Hacks!
44mIndustrial I/O and You: Nonsense Hacks!
48mRecent Changes in the Linux I/O Stack from a DBA’s Perspective
45mData Placement in Linux: Evolving Block and File I/O
