coursebook
coursebook copied to clipboard
Finding Filesystems
We need a high level overview of how to structure a filesystem, what the pertinent parts are and then dive into examples so someone should be able to implement a file-file system.
I'm not quite sure what details are missing here. The first few sections of the chapter in it's current state go over what makes a filesystem and it's pretty much all you need to know to build your own. The only other thing I can potentially see us doing is maybe giving an example of how tmpfs (or ramfs since the code is slightly simpler) is implemented - but that can get kinda complicated since the code involves a fair number of kernel macros/all the memory allocation is done via kernel calls the students don't know about
Right now we just talk about how to do simple reads and writes. https://github.com/illinois-cs241/coursebook/wiki/Filesystems#simple-filesystem-model
Ideally we just talk about
- Metadata blocks
- Why we use offsets.
- What are inode starts/disk blocks
- Right now we just have basic reads and writes. It would be nice to detail how to handle a lot more of the edge cases (when a write pushes onto another block etc)
Prof also talks about filesystems extensions -- at a high level -- like
- Journaling
- Redundancy
- fsck
- Checksums
- Dirty bits
- Sectors/Partition
Hmm, a lot of that is covered (to a large extent) by a prior section https://github.com/illinois-cs241/coursebook/wiki/Filesystems#storing-data-on-disk
I'll look into fleshing out the model section a bit more and adding example c calls reading/writing a specific number of bytes and show how the fs needs to respond.
We should talk about the extensions/extra stuff although I don't want to add a ton of irrelevant to the book. Maybe we can throw a bunch of stuff into an extra section at the end.