<div dir="ltr"><div><div>Hi Sankar,<br><br></div>Have you written any code further. I read your file system's code and learnt a lot from it.<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Aug 8, 2013 at 8:36 PM, Sankar P <span dir="ltr"><<a href="mailto:sankar.curiosity@gmail.com" target="_blank">sankar.curiosity@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
okay. Thanks. I will update this list once I write enough code for the<br>
next release :)<br>
<div class="HOEnZb"><div class="h5"><br>
On Thu, Aug 8, 2013 at 4:59 PM, Greg Freemyer <<a href="mailto:greg.freemyer@gmail.com">greg.freemyer@gmail.com</a>> wrote:<br>
><br>
><br>
> Sankar P <<a href="mailto:sankar.curiosity@gmail.com">sankar.curiosity@gmail.com</a>> wrote:<br>
>>On Thu, Aug 8, 2013 at 3:55 AM, Greg Freemyer <<a href="mailto:greg.freemyer@gmail.com">greg.freemyer@gmail.com</a>><br>
>>wrote:<br>
> <snip><br>
>>><br>
>>> I just read your todo's.<br>
>>><br>
>>> Multi-block files should come before extents and/or mmap support. I<br>
>>> guess you realize that ext2 and ext3 are NOT extent based<br>
>>filesystems.<br>
>>> ext4 is the first extent based one.<br>
>>><br>
>>> So its:<br>
>>> ext2 - block based filesystem<br>
>>> ext3 - block based with a journal<br>
>>> ext4 - extent based with a journal<br>
>>><br>
>>> In reality the current ext4 driver has a matrix of supported<br>
>>features.<br>
>>> There are flag bits which tell you which features a specific<br>
>>> filesystem instance supports. You may want to atleast look at those<br>
>>> feature flags to get an idea of the kinds of features ext4 supports.<br>
>>><br>
>>> If you don't have lseek() support for read, you need to get it added.<br>
>>> lseek() is pretty trivial for reads so there is not much reason not<br>
>>to<br>
>>> have it as the very next step.<br>
>>><br>
>>> For write, it means you have to implement a read/modify/write cycle<br>
>>in<br>
>>> your filesystem. I gather you don't have that.<br>
>>><br>
>>> With just those todo's I go in this order:<br>
>>><br>
>>> - lseek() support with read (trivial)<br>
>>> - partial block write support (requires read/modify/write logic, so<br>
>>not trivial)<br>
>>> - lseek() support for write (trivial now you have partial block write<br>
>>support)<br>
>>> - multi-block support, requires a major refactor most likely.<br>
>>><br>
>><br>
>>Thank you so much for the detailed response.<br>
>><br>
>>I will go in this order as this seem to be logically progressive nicely<br>
>>iiuc.<br>
>><br>
>>When do you think I should bring in support for mmap and page-caching<br>
>>that Rajat in the above plan ?<br>
>><br>
>>Thanks.<br>
><br>
> I've never done a FS from scratch so I'm not sure, but I would delay them as long as you can.<br>
><br>
> I suspect you will need cache support to properly handle writes on a multi block file, so as you work on that feature you may decide "now is the time" for the cache.<br>
><br>
> Mmap should be last.<br>
><br>
> Greg<br>
> --<br>
> Sent from my Android phone with K-9 Mail. Please excuse my brevity.<br>
<br>
<br>
<br>
</div></div><div class="im HOEnZb">--<br>
Sankar P<br>
<a href="http://psankar.blogspot.com" target="_blank">http://psankar.blogspot.com</a><br>
<br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Regards,<br>Rishi Agrawal<br>
</div>