I've been reading OSTEP and decided to implement filesystem - so I can improve my basic understanding.
For the V1, I kept block size of 8 bytes and tried to keep metadata & data together. It was too complex. In the next iteration, I reduced block size to 1 byte and it simplified the implementation. After that, I separated metadata and data and stored them from on opposite ends.
I implemented these commands - touch, mv, cp, rm, mkdir, ls and pwd