mirror of
https://github.com/psankar/simplefs.git
synced 2025-07-23 14:04:38 +02:00
Update README with architecture notes
This commit is contained in:
parent
59ebefe597
commit
4032ad3c09
42
README
42
README
@ -6,14 +6,54 @@ The source files are licensed under Creative Commons Zero License.
|
|||||||
More information at: http://creativecommons.org/publicdomain/zero/1.0/
|
More information at: http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
Full license text at: http://creativecommons.org/publicdomain/zero/1.0/legalcode
|
Full license text at: http://creativecommons.org/publicdomain/zero/1.0/legalcode
|
||||||
|
|
||||||
|
Architecture + Notes
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Block Zero = Super block
|
||||||
|
Block One = Inode store
|
||||||
|
Block Two = Occupied by the initial file that is created as part of the mkfs.
|
||||||
|
|
||||||
|
Only a limited number of filesystem objects are supported.
|
||||||
|
A file cannot grow beyond one block. ENOSPC will be returned as an error on attempting to do.
|
||||||
|
Directories store the children inode number and name in their data blocks.
|
||||||
|
Read support is implemented.
|
||||||
|
Files and Directories can be created. Support for .create and .mkdir is implemented.
|
||||||
|
Basic write support is implemented. Writes may not succeed if done in an offset. Works when you overwrite the entire block.
|
||||||
|
Locks are not well thought-out. The current locking scheme works but needs more analysis + code reviews.
|
||||||
|
Memory leaks may (will ?) exist.
|
||||||
|
|
||||||
|
|
||||||
|
Credits
|
||||||
|
--------
|
||||||
|
All the source code is written by me (Sankar P) until this point.
|
||||||
|
|
||||||
|
An O_LARGETHANKS to the guidance of VijaiBabu M and Santosh Venugopal. Their excellent talks on filesystems motivated me to implement a file system from the scratch. Without their inspirational speeches, I would not have focussed on filesystems.
|
||||||
|
|
||||||
|
A big thanks should go to the kernelnewbies mailing list for helping me with clarifying the nitty-gritties of the linux kernel, especially people like Mulyadi Santosa, Valdis Kletnieks, Manish Katiyar, Rajat Sharma etc.
|
||||||
|
|
||||||
|
|
||||||
|
TODO
|
||||||
|
-----
|
||||||
|
- Check the locks. Remove/Add as necessary.
|
||||||
|
- Send for review
|
||||||
|
- Make a 1.0 release
|
||||||
|
- After the 1.0 release, start with support for extents, which on completion will be 2.0
|
||||||
|
- After the 2.0 release, start with journalling support, which on completion will be 3.0
|
||||||
|
|
||||||
|
|
||||||
|
How To ?
|
||||||
|
--------
|
||||||
|
If you are planning to learn filesystems, start from the scratch. You can look from the first commit in this repository and move the way up.
|
||||||
|
|
||||||
|
|
||||||
To compile:
|
To compile:
|
||||||
------------
|
------------
|
||||||
install linux kernel sources and run make from the checkedout directory.
|
install linux kernel sources and run make from the checkedout directory.
|
||||||
|
|
||||||
|
|
||||||
To test:
|
To test:
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
|
||||||
psankar@linux-9dni:~/src/simplefs> make
|
psankar@linux-9dni:~/src/simplefs> make
|
||||||
|
|
||||||
psankar@linux-9dni:~/src/simplefs> dd bs=4096 count=100 if=/dev/zero of=image
|
psankar@linux-9dni:~/src/simplefs> dd bs=4096 count=100 if=/dev/zero of=image
|
||||||
|
Loading…
x
Reference in New Issue
Block a user