2014-03-28 23:11 GMT+05:30 Rishi Agrawal <rishi.b.agrawal@gmail.com>:
Hi Sankar,
Have you written any code further. I read your file system's code and learnt a lot from it.
Good to know that you have learnt from it. I stopped at a logical closure where the filesystem is at a usable state. I did not write any code further as I am spending my personal time on changing diapers for my newborn :) Whatever little time I get, I tend to do it in trivial user space applications. Extending the filesystem requires long hours of learning, context maintenance, focus etc. So I deferred it for a later stage. I will be happy to get some patches though :)
On Thu, Aug 8, 2013 at 8:36 PM, Sankar P <sankar.curiosity@gmail.com> wrote:
okay. Thanks. I will update this list once I write enough code for the next release :)
On Thu, Aug 8, 2013 at 4:59 PM, Greg Freemyer <greg.freemyer@gmail.com> wrote:
Sankar P <sankar.curiosity@gmail.com> wrote:
On Thu, Aug 8, 2013 at 3:55 AM, Greg Freemyer <greg.freemyer@gmail.com> wrote: <snip>
I just read your todo's.
Multi-block files should come before extents and/or mmap support. I guess you realize that ext2 and ext3 are NOT extent based
filesystems.
ext4 is the first extent based one.
So its: ext2 - block based filesystem ext3 - block based with a journal ext4 - extent based with a journal
In reality the current ext4 driver has a matrix of supported features. There are flag bits which tell you which features a specific filesystem instance supports. You may want to atleast look at those feature flags to get an idea of the kinds of features ext4 supports.
If you don't have lseek() support for read, you need to get it added. lseek() is pretty trivial for reads so there is not much reason not to have it as the very next step.
For write, it means you have to implement a read/modify/write cycle in your filesystem. I gather you don't have that.
With just those todo's I go in this order:
- lseek() support with read (trivial) - partial block write support (requires read/modify/write logic, so not trivial) - lseek() support for write (trivial now you have partial block write support) - multi-block support, requires a major refactor most likely.
Thank you so much for the detailed response.
I will go in this order as this seem to be logically progressive nicely iiuc.
When do you think I should bring in support for mmap and page-caching that Rajat in the above plan ?
Thanks.
I've never done a FS from scratch so I'm not sure, but I would delay them as long as you can.
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.
Mmap should be last.
Greg -- Sent from my Android phone with K-9 Mail. Please excuse my brevity.
-- Sankar P http://psankar.blogspot.com
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Regards, Rishi Agrawal
-- Sankar P http://psankar.blogspot.com