Thinking of writing a user-space ext4 driver for Windows from scratch. Am I insane?
I use Ubuntu for almost everything (except gaming 😞), but I need a reliable way to read (and eventually write) my ext4 partitions from Windows. There are some existing tools out there, but I'm thinking of building my own implementation from the ground up, mostly as a deep dive into filesystem internals.
I’ve been doing a lot of low-level systems programming in Go lately, so I've got a decent grasp on memory management and bit-twiddling. But filesystems are a whole different beast.
current roadmap:
- start with a read only
- traverse extent trees and HTrees for massive directories
- mount it as a read-only virtual drive using WinFSP
- implement block allocation and eventually JBD2 journaling
A few questions for anyone who has ideas :
- I'm heavily leaning toward Go for the concurrency and easy struct unpacking, wrapping it with WinFSP via cgofuse. Am I going to regret not doing this in C or Rust when it comes to memory mapping raw blocks?
- implementing the JBD2 protocol for safe writes is gonna be the main challenge. Is it feasible for a solo dev to build write support?
- Any specific edge cases with ext4 legacy baggage I should watch out for on day one?
Any advice, reality checks, or recommended reading (currently digging through the kernel docs and lwext4) would be hugely appreciated.