STO-220 · Storage & Filesystems
Writing a Filesystem from Scratch
Implement a small but real filesystem, which is the fastest way to genuinely understand the VFS.
Who this course is for
Experienced kernel engineers who want the fastest route to real VFS fluency: implement a small but genuine filesystem and let the kernel's own test suites tell you what you got wrong.
Prerequisites
Course outline
Day 1 — The on-disk format and getting mounted
- Designing a minimal format: superblock, inode table, block allocation map
- Writing the mkfs tool in userspace
- Module skeleton: register_filesystem, ->mount, fill_super, kill_sb
- Reading on-disk structures safely: buffer heads vs bio
- Milestone: mount and unmount cleanly
Day 2 — Inodes, dentries and directories
- Implementing ->lookup and the dentry interface
- Directory format and ->iterate_shared (readdir)
- ->create, ->mkdir, ->link/->unlink and updating the parent
- iget and the inode cache; when inodes get written back
- Milestone: ls, stat, mkdir and rm all work
Day 3 — The data path
- address_space_operations: read_folio, write_begin/write_end
- Block allocation on write and the allocation bitmap
- Integrating with the page cache instead of fighting it
- ->fsync and what durability you actually guarantee
- Symlinks and the remaining inode operations as time allows
Day 4 — Testing like a filesystem developer
- fsx: randomised operation fuzzing and interpreting failures
- Running generic xfstests against your filesystem
- Fault injection: failing block devices and allocation failures
- Locking review under parallel load; lockdep findings
- Code review clinic: defending your design under upstream-style critique
Hands-on labs
Labs follow the academy model — 35% principles, 20% guided investigation, 45% engineering studio. Every claim you make in a lab is backed by a trace, a counter or a measurement you captured yourself. How we teach
- Lab: write mkfs for your format and mount the resulting image read-only in QEMU
- Lab: implement ->lookup and ->iterate_shared until find and ls behave correctly
- Lab: implement the write path with block allocation and prove data survives umount/remount
- Lab: run fsx and a subset of xfstests generic cases; triage and fix the first three failures
- Lab: inject block-device failures mid-write and make your ->fsync semantics honest under error
Capstone project
The filesystem itself is the capstone: by day 4 you demonstrate it mounting, surviving a parallel fsx run and passing a defined subset of xfstests generic cases, then present the evidence — test logs, a fault-injection transcript, a lockdep-clean parallel workload, and a short design note stating precisely which durability guarantees your format does and does not make.
What you leave with
- A working filesystem you wrote and can extend
- The VFS operations tables understood from the implementer's side
- fsx and xfstests as ongoing development tools
- Fault-injection discipline behind any durability claim
- A realistic sense of what upstream filesystem review demands
How it runs
Every course follows the same model: 35% principles, 20% guided investigation, 45% engineering studio. You leave with working code, raw measurements and an evidence-based report — not a certificate of attendance. Read the methodology or see a full sample lesson.
Material is adapted to your kernel version, hardware and workload before a private delivery. For public cohorts, the environment is provided and configured.
Questions
Who is this course for?
Experienced kernel engineers who want the fastest route to real VFS fluency: implement a small but genuine filesystem and let the kernel's own test suites tell you what you got wrong. It sits at expert level within the Storage & Filesystems track.
What do I need to know already?
Specific prerequisites for this course: Solid C and kernel module development (KRN-110 level); STO-201 (VFS Internals) or equivalent strongly recommended; Ability to build and boot your own kernel in QEMU. We confirm levels before the cohort starts and adapt if a group is stronger or weaker than expected.
Can this run privately for my team?
Yes. Any course runs on-site at your offices anywhere, or live online for a distributed team, with labs adapted to your hardware and codebase.
What is the difference between in-person and online?
In person is 4 full days with hardware on your desk, capped at 14. Online is 8 half-day sessions across about two weeks so you can keep working, capped at 20, with remote lab access.
Do you invoice companies?
Yes. Purchase orders are accepted and invoicing is available in USD, EUR, GBP, SAR and CAD.
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 1 Nov – 4 Nov 20264 full days | RiyadhIn person · KAFD Conference Centre | 10 of 14 | — | SAR 13,500 | |
| 8 Nov – 11 Nov 20264 full days | Kuwait CityIn person · Al Hamra Tower | 5 of 14 | KWD 1,010until 9 Oct | ||
| 8 Nov – 11 Nov 20264 full days | MuscatIn person · Knowledge Oasis Muscat | 10 of 14 | OMR 1,250until 9 Oct | ||
| 15 Nov – 24 Nov 20268 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 4 of 20 | US$2,340until 16 Oct | ||
| 16 Nov – 19 Nov 20264 full days | OttawaIn person · Kanata North Tech Park | 5 of 14 | CAD 4,410until 17 Oct | ||
| 23 Nov – 26 Nov 20264 full days | TorontoIn person · MaRS Discovery District | 10 of 14 | CAD 4,410until 24 Oct | ||
| 23 Nov – 26 Nov 20264 full days | LondonIn person · Shoreditch Works | 5 of 14 | GBP 2,530until 24 Oct | ||
| 23 Nov – 2 Dec 20268 half-days | Europe bandLive online · 09:00–13:00 CET | 9 of 20 | US$2,340until 24 Oct | ||
| 23 Nov – 2 Dec 20268 half-days | Americas bandLive online · 13:00–17:00 ET | 14 of 20 | US$2,340until 24 Oct | ||
| 30 Nov – 3 Dec 20264 full days | BerlinIn person · Factory Görlitzer Park | 10 of 14 | EUR 2,980until 31 Oct |
Dates shown for the next few months. If nothing fits, tell us where and when — cohorts are added on demand, and private delivery can be scheduled any week.
More in Storage & Filesystems
STO-1013 days
Block Layer & I/O Schedulers
How an I/O request travels from the filesystem to the device, and what the scheduler does to it on the way.
Practitioner-taught
SAR 7,880Next 15 Nov
STO-1103 days
NVMe & NVMe-oF
NVMe as a protocol and as a driver, including fabrics for disaggregated storage.
Practitioner-taught
SAR 9,000Next 25 Oct
STO-1203 days
Device Mapper & LVM
Composing block devices: linear, striped, snapshot, thin provisioning, crypt and cache targets.
Practitioner-taught
SAR 7,880Next 11 Oct
STO-2013 days
VFS Internals
The abstraction every filesystem implements: inodes, dentries, the page cache and the locking around them.
Practitioner-taught
SAR 9,000Next 18 Oct
STO-2103 days
ext4 & XFS Internals
The on-disk layout and operational behaviour of the two filesystems most production Linux runs on.
Practitioner-taught
SAR 9,000Next 15 Nov