STO-220 · Storage & Filesystems · Expert
Writing a Filesystem from Scratch — full syllabus
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
- 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
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
- 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
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 |
Book a seat, or bring this course to your team
Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.
Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.