Atheon maps a custom SysV-inspired block layout onto the FUSE low-level API with mkfs tooling, buffer cache, and exhaustive logging for CS270 labs.
Atheon is a teaching filesystem that demonstrates how a handcrafted block layout can backstop FUSE's low-level API. A CLI bootstrapper accepts a mountpoint and optional backing store before composing the disk layer, buffer cache, inode manager, data block manager, and file manager. With debug builds it runs entirely in-memory for safe experimentation; release builds target a 40 GB device with 4 KiB blocks so students can inspect allocation internals without reformatting real disks.
DiskLayer abstracts storage, opening an O_RDWR descriptor when debug is off or allocating an in-memory buffer otherwise, enforcing 4 KiB span I/O.BufferCache tracks hash buckets plus an LRU-style free list; misses recycle the head entry, flush dirty blocks, and move the refreshed slot to the tail.DataBlockManager consumes freelist entries, zeroes new blocks, and reinserts freed blocks either into spare slots or by prepending the freelist head.INodeManager maps inode IDs to (block, offset) pairs and allocates the first free slot by toggling the allocated guard and refreshing timestamps._get_data_block_idx and its allocating sibling walk direct, single, double, and triple-indirect trees to grow files while updating st_blocks.DirentOperations for lookup, unlink, rmdir, and slot allocation, keeping traversal logic generic and reusable.spdlog diagnostics for debugging.atheon binary and a googletest-based test_runner.tests/test_runner.cpp initialises the singleton stack against /dev/vdb, mirroring production startup before running buffer cache, mkfs, data block manager, and file manager suites.build.sh configures a Release build in one step, while CLI flags support --debug for in-memory testing and --load-from-disk to skip mkfs when reusing a device.Rich instrumentation, disciplined freelist accounting, and templated directory operations make it easy to trace bugs, reason about refcounts, and extend the teaching stack toward production-grade behaviors.