tscs37's Blog

Designing a Disk-based Tree

To design a modern filesystem, you kinda need trees to some extend. The problem I’ve found is that existing implementations of trees, atleast in Go, either memory map data or other, similar problems. To aid in discovery of the perfect tree for this project, I’ve summarized some requirements; All data needs to be persistent to disk at all times Updates must be atomic Memory Footprint should be adjustable and small Read Latency must be small Must work with FAT32, read: 4 GiB File Splits COW and Transactions not strictly required (Those can be bootstrapped from atomic properties) I’m going to explain those shortly and detail why I chose those limitations and properties. Read more...

Allocating Data on Disk

The first hurdle to saving data in a FS is the allocation on disk. On the disk, there is only raw data accessed by addresses (or similar structures like Cylinder, Head, Sector, etc.) To sidestep this issue, SRPFS is an overlay on top of an existing filesystem. It is seperated into three layers; Blob Layer Allocation Layer Index Layer This post will be exclusively about the Blob Layer Read more...

Hello from the Code

printf(“Hello World”); The first post of a blog rarely contains anything informative or useful, so I’ll keep it to that tradition. At the time of writing this post I have several ideas and a running side-project, my posts will likely focus on the later and maybe I’ll do something with the former too. Current Side Project At the moment, I’m working on implement in a new userspace filesystem for securely storing data with similar write-characteristics as photos. Read more...