Hi,
Cheers to all!
I was working on
ext2{3,4} write support, for the
KolibriOS Summer of Code. I'm pleased to announce that I've pushed all the code upstream. What I've achieved is refactoring all the ext2 code, splitting it up, adding "needs-own-module" code to kernel/trunk/fs/ext2.inc, working ext2 write support, merging of
CleverMouse's change to use the new interface (that took some time, as it happened mid-way through my work), and bug fixes in the read driver. I had promised better ext{3,4} support, but, unfortunately, couldn't deliver much on that front (although, with a very limited feature-set of either, you could write still; more advanced features couldn't find proper support, as of now). I've added a TODO, as per the suggestion of
yogev_ezra, in kernel/trunk/fs/ext2.inc.
As for known issues, I have two, both of which I believe aren't directly related to my code:
- SWAP partitions also get listed. Previously, with the old device-interface, there'd be a partition type, which, AFAIK, was gathered from the MBR. This was matched up against the ext2-partition type, and thus, a SWAP partition wouldn't get listed. With CleverMouse's changes, however, I saw that variable altogether removed. I couldn't figure out how to get the partition type, and, since the partition is a valid ext2 partition, it would correctly list it. I think CleverMouse would be able to handle this better than me.
- While trying to copy, say, kolibri.img, a file new_kolibri.img is generated. This happens successfully. If you try to copy kolibri.img again, I see GetFileInfo getting a bogus request for a kolibri.lbl file, to which it returns "file not found." Eolite hence displays a small error, although, the write still takes perfectly fine. I couldn't find any such source in my code; I think the Eolite developer(s) can better handle this. I've left certain DEBUGF instructions, commented out, in kernel/trunk/fs/ext2.asm. Uncomment them, and you should get better information about how each syscall returns (and see the bogus request).
The
KolibriOS Summer of Code provided quite some experience to me, especially about participation in a big-scale open source project. I'd like to thank
yogev_ezra, who guided me well, teaching me more about proper conversations with the team. As a minor list of acknowledgements, seeing as it calls for it, I'd like to thank my dad (who let me take part), and my friends nortti and Rishabh, whom I constantly bugged (pun intended), when I was trying to fix a bug (the latter of whom probably didn't understand much). I'd also like to thank sortiecat for helping me out with bugs.
Regards,
Shikhin