<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-418544312332569488</id><updated>2011-12-14T22:54:14.202+05:30</updated><category term='removing'/><category term='completion'/><category term='pfs'/><category term='pool'/><category term='storage'/><category term='block_devices'/><category term='IOCTL'/><category term='mapping'/><category term='filesystem'/><category term='zfs'/><category term='create'/><title type='text'>PFS from INODZ</title><subtitle type='html'>Developing the Pooled storage File System for LINUX KERNEL.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-4058613867744151322</id><published>2009-04-26T14:21:00.006+05:30</published><updated>2011-07-29T21:21:20.709+05:30</updated><title type='text'>Finally we are ready with our very first version of PFS for linux.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;hello everyone...&lt;br /&gt;As, raj mentioned, we have completed the integration of pools and PFS . Here s a detailed documentation of our work. For those who are still not clear about our work can take a look at this document  :) &lt;a href="https://docs.google.com/uc?id=0BzYpjG_BbB4EZDYxZmQ4NjktN2E5YS00YjZkLWE0OTYtNmU2MDllNmU1NjZi&amp;export=download&amp;hl=en_US"&gt; click here to download &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width=100% height=560px frameborder=0 src=https://docs.google.com/viewer?a=v&amp;pid=explorer&amp;chrome=false&amp;embedded=true&amp;srcid=0BzYpjG_BbB4EZDYxZmQ4NjktN2E5YS00YjZkLWE0OTYtNmU2MDllNmU1NjZi&amp;hl=en_US&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Just like the first step of any open source software, our filesystem has put up in  sourceforge and we are waiting for more involvement in building this into a next generation filesystem for linux. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-4058613867744151322?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/4058613867744151322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=4058613867744151322' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/4058613867744151322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/4058613867744151322'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/04/hello-everyone.html' title='Finally we are ready with our very first version of PFS for linux.'/><author><name>uj_san</name><uri>http://www.blogger.com/profile/12353616037541296441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-8042313988588065505</id><published>2009-03-28T22:09:00.000+05:30</published><updated>2009-03-28T22:10:19.172+05:30</updated><title type='text'>Stick a fork in me.. I'm done !</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana; font-size: 13px; line-height: 19px; "&gt;Its been long time since I blogged. Now here it comes......................&lt;br /&gt;&lt;br /&gt;We never expected we'll finish this fast.&lt;br /&gt;A very basic file system is done. We can now dynamically add disks into the pool.&lt;br /&gt;The removing part is still there. for that we need to defragment the harddisk and so on.... tat job is postponed for next month...&lt;br /&gt;&lt;br /&gt;I started with minix_fs. it was one simple filesystem.  I also wrote PFS specific bit operations. [ in pfs_bitops.c].  After going through minix code, some 20 times, i understood all the functions in the itree_common.c.  It was difficult though. Luckily, I needn't change these functions. I copied them as such. We made lot of changes in dir.c... Every thing went like this... Changing was no big problem. Everything got over by 20th of march.&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There were some zillion bugs in the file system... There was this bug wat friends called INFINITE FILE SYSTEM. The file syste's size was unlimited... u can fed the disk even with terrabytes of data.. [ofcourse the older the data gets, the more it got corrupted ] Hmm... It took 2 days to fix that bug completely.! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway.. After all this, The PFS is now bug free.! The dynamic shrinking part is left.! The integation of the file system and the pool is there (not a big job.!). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are planning to sourceforge the project soon. We need a perfect documentation etc for this. so this will be done only by next month i guess...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Things tat are left in our project.&lt;/div&gt;&lt;div&gt;* Integration of PFS and POOL.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Benchmarking.&lt;/div&gt;&lt;div&gt;* Documentation.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Optional modules ( if we have time)&lt;/div&gt;&lt;div&gt;&lt;div&gt;* De fragmenting [ dynamic removal ] .&lt;/div&gt;&lt;div&gt;* Minix - to - PFS porting module.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-8042313988588065505?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/8042313988588065505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=8042313988588065505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/8042313988588065505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/8042313988588065505'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/03/stick-fork-in-me-im-done.html' title='Stick a fork in me.. I&apos;m done !'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-1174659274935860610</id><published>2009-03-13T14:50:00.002+05:30</published><updated>2009-03-13T15:29:57.213+05:30</updated><title type='text'>Pools completed!!! File system under construction...</title><content type='html'>Its been a while since the blog was updated. We lost focus for a bit. Got busy with other things. Anyway... The project is back on track. We made quite a lot of progress. We got the project approved at sourceforge. Once we have a minimal usable version, we'll put it there.&lt;br /&gt;&lt;br /&gt;As for the details of the project. All kinds of verification has been done. Pools with the same name cannot be created. Same disk cannot be added to multiple pools. Pools can be renamed and deleted. We made sure that the Pools always have at least one disk. Its a pretty stable code now.&lt;br /&gt;&lt;br /&gt;Since the pool is a virtual RAM based disk which just maps all the requests... It used to disappear every time the system is rebooted or the kernel module is reloaded. We have put in metadata into each disk which is a part of a pool. I was allowed the first 1024 bytes (ie. the boot block) to use for metadata.&lt;br /&gt;&lt;br /&gt;As the initial plan was to store details of all disks and all pools into every participating disk... we had thought of limiting the maximim number of pools and disks in each pool. Then we reduced the metadata to storing details of all disk of only the corresponding pool in each disk. Though it allowed "infinite" number of pools... we still had to limit the number of disks in each pool.&lt;br /&gt;&lt;br /&gt;Finally after much thought... we just reduces the metadata to this: signature, pool name, rank, random number, total disks, checksum. The string is just to check if the disk is part of any pool. We have used the word "pfs-inodz" as signature. ;-) Pool name to specify which pool it belongs to. rank says at what order the disk appears in the pools. random number is to fix an issue ( say... two pools are created with the same name in two different computers and then connected to the same computer. PFS could go crazy... but the random number filled in saves the day. It is the same for every disk in a pool.) Total disks is to make sure that all the disks in the pool are present and thus the pool is valid. Checksum is to check if the metadata is valid.&lt;br /&gt;&lt;br /&gt;Then another mad problem was to find a way to iterate through all block_devices connected to the system. the internal list maintained by the kernel all_bdevs is not exported and so not accessible. So... the ioctl guy, santosh, writes this program to get the list of all devices from the output of the command "fdisk -l" and pass it to the module when it is inserted.&lt;br /&gt;&lt;br /&gt;Now with that list.... I could read all the metadata from participating disks and recreate the pools everytime. TADAAA!!! Done.&lt;br /&gt;&lt;br /&gt;Meanwhile... rajgopal was looking through the minix code. By the way... thats the file system we have decided to use as a base to work on (because of its comparitive simplicity of course). Made some progress there. Apparently, it is easier than we thought it would be. Modification of some 10 functions which handle the superblock should do the job.&lt;br /&gt;&lt;br /&gt;The file system needs a lot of data from the pools. So we decided to integrate the two and run it as one single kernel module. We are integrating our pool code with the minix2 code now.&lt;br /&gt;&lt;br /&gt;Anyway instead of me blabbering... he knows better about e file system now. I ll ask him to post.&lt;br /&gt;&lt;br /&gt;At least it looks as though we ll be able to finish the project in a while well within the deadline... Fingers crossed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-1174659274935860610?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/1174659274935860610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=1174659274935860610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/1174659274935860610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/1174659274935860610'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/03/pools-completed-file-system-under.html' title='Pools completed!!! File system under construction...'/><author><name>Krishna Swaroop</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-2308767480620172798</id><published>2009-02-24T17:40:00.001+05:30</published><updated>2009-02-24T17:42:45.079+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pool'/><category scheme='http://www.blogger.com/atom/ns#' term='removing'/><category scheme='http://www.blogger.com/atom/ns#' term='create'/><category scheme='http://www.blogger.com/atom/ns#' term='completion'/><category scheme='http://www.blogger.com/atom/ns#' term='IOCTL'/><category scheme='http://www.blogger.com/atom/ns#' term='block_devices'/><title type='text'>Heading towards completion of POOLS :)</title><content type='html'>With the level of confusion and cluelessness we had in the beginning of the project, we never expected the project would pick up such a pace. Guess thats how it is when it comes to linux kernel hacking. Unbelievably interesting work to do. Anyway... coming to the progress of the project, We are still working on the pools. We are done with lets say 85-90% of it. There were features and bugs which took much longer than we expected. Since the last blog update, we added these features successfully:&lt;br /&gt;    -Adding block devices to pools&lt;br /&gt;    -Removing block devices from pools&lt;br /&gt;    -Creating pools via IOCTL commands&lt;br /&gt;    -Multiple number of pools&lt;br /&gt;    -Names to pools&lt;br /&gt;   &lt;br /&gt;    Adding and removing were pretty straight forward. We were stuck when we needed to write a code to return a block_device when the name of the device was given. We finally used this function called open_by_devnum(). Later when our job with the block_devices is over(exiting the module, deleting disks from pool, etc), we use the function blkdev_put() to close the devices.&lt;br /&gt;    Then, for creating pools, we decided to have an initial pool called /dev/pool which would recieve and execute all requests(IOCTL) to create pools.&lt;br /&gt;&lt;br /&gt;TO-DO list:&lt;br /&gt;    -Writing metadata having information about all pools and constituent block devices to pools.&lt;br /&gt;    -Scanning all disks at startup to create pools.&lt;br /&gt;    -Minor work such as renaming and deleting pools.&lt;br /&gt;    -IOCTL commands to list all pools and their member block devices.&lt;br /&gt;&lt;br /&gt;    Now with that, would complete the work on the pools. Hopefully in another week. We'll probably put the code for the pool on the blog after that.&lt;br /&gt;    Then we have to work on the filesystem. A lot of study has to be done. We have no clear direction yet. We expect to get stuck for a long time. As he said... GOD HELP US WITH THAT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-2308767480620172798?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/2308767480620172798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=2308767480620172798' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/2308767480620172798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/2308767480620172798'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/02/heading-towards-completion-of-pools.html' title='Heading towards completion of POOLS :)'/><author><name>Krishna Swaroop</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-7209989401860416673</id><published>2009-02-18T14:56:00.002+05:30</published><updated>2009-02-18T19:06:43.982+05:30</updated><title type='text'>One to many mapping and IOCTL.</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;This project is going really great. After the one to one mapping, the next plan was to make one to many mapping.&lt;br /&gt;The pool disk will be the one in which the file system will reside on. This pool device internally maps to the block devices of the original harddisks.&lt;br /&gt;&lt;br /&gt;Krishna and I worked hard like never before.&lt;br /&gt;The one to many consists of these steps.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Get the bio&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Find in which disk the bio starts.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;If bio starts and ends in the same device,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;     then change the block_dev and sector and send_bio;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;else if the bio spans many devices,&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;     then split_bio and call this same function recursively&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;This had lots of bugs. we spent some 2 days to make the code bug free (at least as far as we tested its bug free)&lt;br /&gt;This module, while developing, by default spans only /dev/ram0,1. But we need the user to select the devices.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Here comes ioctl.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only way user programs can communicate with driver is through IOCTL calls. Me and Krishna, now started concentrating on writing ioctls. We wrote the ioctl handling inside drivers. Santhosh started working on user commands. He creates c-programs, that get commands. Commands look something like,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ pool add /dev/pool0 /dev/ram10&lt;/span&gt; &lt;span style="font-style: italic;"&gt;/dev/ram12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This means, Add /dev/ram10 and ram12 to /dev/pool0. This guy, gets the devices in command line arguement and put it in a datastructure.  Finally, according to wat to be done (add, remove etc..), he passes the corresponding ioctl_command_number with the datastructure.&lt;br /&gt;&lt;br /&gt;We get this datasructure inside the driver and we add the corresponding block_device objects of the devices to out list of devices handled by pool. Same applies for remove..&lt;br /&gt;&lt;br /&gt;Some ioctl operations are left.. We are doing that.&lt;br /&gt;Our next step will be, putting metadata on harddisks. We know nothing in this. Lots Lots of problem. As soon as we are done, I'll post the same here!&lt;br /&gt;We've not yet touched the file system part. Problem lies there too....&lt;br /&gt;&lt;br /&gt;GOD HELP US! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-7209989401860416673?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/7209989401860416673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=7209989401860416673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7209989401860416673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7209989401860416673'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/02/one-to-many-mapping-and-ioctl.html' title='One to many mapping and IOCTL.'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-8881987107147578455</id><published>2009-02-07T16:11:00.000+05:30</published><updated>2009-02-07T16:12:00.880+05:30</updated><title type='text'>Thinking of Pool data structures..</title><content type='html'>&lt;div class="post-body entry-content"&gt; &lt;span style="font-family: verdana;"&gt;For the past 2 days, I and Krishna were thinking about the structure of the pool. Went well. Many ideas came up. To handle pool, there should be 2 data structures. &lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;one for physical on_disk pool. (when the pool info is saved in disks, we should take care of : 'this' data is from 'this' sector to 'this' sector. )&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;one for memory (take information from physical disks and put it in the pool object in memory which is handy for programming.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;These things are going fine. Once they are clearly defined, I'll put them up here. We also came up with a &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-family: verdana;"&gt;few problems&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; we might be facing.&lt;/span&gt;&lt;ol style="font-family: verdana;"&gt;&lt;li&gt;How can a disk (partition or physical disk or whatever) be uniquely identified ? The device address (like /dev/sda) might change if you reboot.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When the computer is rebooted, our pool should know what all disks it was handling before. For this we need to store the pool-device relationship somewhere permanently (you cant store it in disk which is participating in pool because it can be removed). Where can I save that ?&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;(!) Lot of things become easy if we keep a maximum limit on the disk that can participate in the pool ( say 256 ).. May be there are ways to handle infinite number of disks, but to begin with, the first version will have 256 as limit.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;   &lt;span class="post-author vcard"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-8881987107147578455?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/8881987107147578455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=8881987107147578455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/8881987107147578455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/8881987107147578455'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/02/thinking-of-pool-data-structures.html' title='Thinking of Pool data structures..'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-3538067187253098388</id><published>2009-02-06T12:08:00.004+05:30</published><updated>2009-02-06T12:31:25.679+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pool'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><title type='text'>ONE - to - ONE mapping... SUCCESS</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-family: georgia;"&gt;Pool is the device over which the file system is going to operate on.&lt;/span&gt; So, The pool has to redirect the requests that it gets to the original devices below it. I was bit stuck with "how can this communication be achieved ?"................&lt;br /&gt;I was thinking of EXPORTING the transfer functions globally, so that, the pool's job as simple as to call the transfer functions. But is this generic ?&lt;br /&gt;* I've EXPORT them.,&lt;br /&gt;* Recompile the driver&lt;br /&gt;* Also, you cant do this for all the drivers&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;COMPLETELY NOT GENERIC!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then, Hari Helped!!!!!&lt;br /&gt;&lt;br /&gt;He told me there are several ways by which u can achieve this without EXPORTING. one of the way is submit_bio(). I read in LDD3, "If you want to redirect, you change the bio-&gt;bi_bdev, and resubmit the bio".... [ GREAT!!! ]&lt;br /&gt;But how to get the block_device object of a device....??&lt;br /&gt;&lt;br /&gt;Hari Helped!!!!!&lt;br /&gt;&lt;br /&gt;* Path_lookup the device&lt;br /&gt;* Get the inode of the device from nameidata&lt;br /&gt;* Get the dev_t object fom the inode&lt;br /&gt;* open_by_devnum and get the block_device [GREAT!!!!]&lt;br /&gt;&lt;br /&gt;ok... Got the block_device....&lt;br /&gt;I changed the block_device and submited the bio&lt;br /&gt;KERNEL PANICS!!!!!!!&lt;br /&gt;tried tried tried tried tried....... 3 days of trying,&lt;br /&gt;Hari pointed out the bug was there in bio_endio, but i din know what exactly the bug is.&lt;br /&gt;05-01-2008, about 4.30 pm, evrery thing got so clear....&lt;br /&gt;&lt;br /&gt;what i thought was,&lt;br /&gt;* submit_bio() returns only after performing the whole I/O operation.&lt;br /&gt;* so after the submit_bio, the bio is a waste&lt;br /&gt;* i killed it after submit_bio&lt;br /&gt;&lt;br /&gt;But the thing is,&lt;br /&gt;* submit_bio retuns after "JUST PUTTING THE BIO IN THE REQUEST QUEUE OF THE OTHER DEVICE"&lt;br /&gt;* not knowing this, i was killing the bio (which was still in the request queue)&lt;br /&gt;&lt;br /&gt;FINE!&lt;br /&gt;i wrote my bi_end_io function and did all ending operations there.........&lt;br /&gt;TADAAAAAA.....&lt;br /&gt;The code worked. Whatever operations tat i did in the pool, got reflected in ram0... Thankyou hari for all your help.! &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;This project is going awesome..... Lots of learning........&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: verdana;"&gt;NEXT_STEP : one-to-many mappping...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-3538067187253098388?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/3538067187253098388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=3538067187253098388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/3538067187253098388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/3538067187253098388'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/02/one-to-one-mapping-success.html' title='ONE - to - ONE mapping... SUCCESS'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-7533964950254390253</id><published>2009-01-30T19:01:00.011+05:30</published><updated>2009-04-11T17:39:34.689+05:30</updated><title type='text'>CREATING POOLS.......</title><content type='html'>This is how i'm gonna implement pools......&lt;br /&gt;&lt;br /&gt;* Every disk that is present in the system is controlled by a driver.&lt;br /&gt;* every driver has a request queue.&lt;br /&gt;&lt;br /&gt;I will create a virtual device - POOL. Pool's size  =  sum of sizes all the devices tat forms the pool.&lt;br /&gt;any request that comes to my Pool's request queue will be forwarded to a corresponding physical device&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;-------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;| DEV-A   |   DEV-B   |   DEV-C | &gt; &lt;span style="font-style: italic;"&gt;dev_name&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;| 0-100   |   0-100   |   0-100 | &gt; &lt;span style="font-style: italic;"&gt;size in sectors&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;-------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;              &lt;/span&gt;........................||...........................&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;              &lt;/span&gt;........................||...........................&lt;br /&gt;.......................\_/........................&lt;br /&gt;........................\/.........................&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;|            .........POOL ..........|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;|            ......... 300 ..........|  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier,monaco,monospace,sans-serif;"&gt;              &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so, this pool is only visible to the user.&lt;br /&gt;Any I/O request to the POOL should be converted to I/O request of the device.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example : any request to read the 125'th sector of the pool, should be a request to read the DEV-B's 25th sector.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;please see,&lt;br /&gt;&lt;a href="http://lwn.net/Articles/58720/"&gt;http://lwn.net/Articles/58720/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this device driver,&lt;br /&gt;static void sbd_transfer(); does the copying job from buffer to disk....&lt;br /&gt;&lt;br /&gt;I need to modify this sbd_transfer(), such that,&lt;br /&gt;{&lt;br /&gt;if(sector&gt;= 0 &amp;amp;&amp;amp; sector &lt;100)  class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;i/o request should be sent to DEV-A's driver...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if(sector&gt;= 100 &amp;amp;&amp;amp; sector &lt;200) class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;i/o request should be sent to DEV-B's driver...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if(sector&gt;= 200 &amp;amp;&amp;amp; sector &lt;300) class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;i/o request should be sent to DEV-C's driver...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;This is the algorithm&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;Questions.&lt;/span&gt;&lt;br /&gt;* Is this possible ?&lt;br /&gt;* If this is possible, how can we enable communication between Drivers?&lt;br /&gt;[pool's driver need to pass a read/write request to DEV-B.. HOW?]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-7533964950254390253?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/7533964950254390253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=7533964950254390253' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7533964950254390253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7533964950254390253'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/01/creating-pools.html' title='CREATING POOLS.......'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-1647620065560821463</id><published>2009-01-28T18:59:00.005+05:30</published><updated>2009-01-28T19:17:47.641+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pool'/><category scheme='http://www.blogger.com/atom/ns#' term='filesystem'/><category scheme='http://www.blogger.com/atom/ns#' term='zfs'/><category scheme='http://www.blogger.com/atom/ns#' term='pfs'/><category scheme='http://www.blogger.com/atom/ns#' term='storage'/><title type='text'>Modules of the Project...</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;PFS will have 2 main modules.....&lt;br /&gt;1. Pool manager&lt;br /&gt;2. File system.&lt;br /&gt;&lt;br /&gt;* Pool manager is the one tat should replace the volume manager.&lt;br /&gt;The Pool Manager should handle multiple disks as a single logical pool. the size of that logical pool should not be limited. the size should grow when another disk is added to the pool, it should decreased when a disk is removed.! It should provide various functions to the file system tat will be sitting above this.&lt;br /&gt;&lt;br /&gt;* the File System - PFS is the one tat interacts with the Pool Manager to get the data written into the hard disk. For this, the FS makes use of the methods provided by the pool manager. This interacts with the upper level layers like system calls etc.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-1647620065560821463?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/1647620065560821463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=1647620065560821463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/1647620065560821463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/1647620065560821463'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/01/modules-of-project.html' title='Modules of the Project...'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-7310232246527000895</id><published>2009-01-25T12:26:00.005+05:30</published><updated>2009-01-28T19:18:18.880+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='pool'/><category scheme='http://www.blogger.com/atom/ns#' term='filesystem'/><category scheme='http://www.blogger.com/atom/ns#' term='zfs'/><category scheme='http://www.blogger.com/atom/ns#' term='pfs'/><title type='text'>WHY PFS ?</title><content type='html'>&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Here is a detailed Description of the PFS...&lt;br /&gt;&lt;br /&gt;Current filesystems have this problem : LIMITED SIZE...&lt;br /&gt;u allocate certain size for a file system, format a file system, done.!&lt;br /&gt;&lt;br /&gt;say,&lt;br /&gt;in a 50 hard disk, u have 3 logical partitions&lt;br /&gt;MOVIES | PROJECTS | DOCUMENTS..&lt;br /&gt;20GB........20GB...........10GB&lt;br /&gt;&lt;br /&gt;* now consider MOVIES partion is full&lt;br /&gt;* there is 15GB free space in PROJECTS&lt;br /&gt;* still u cant add even a single file in MOVIES !!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why not make a file system tat can dynamically expand and shrink...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;We'll eliminate the term "VOLUMES, PARTITIONS"... We'll make POOLS!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, how about,&lt;br /&gt;* MOVIES , PROJECTS, DOCUMENTS share the same 50GB.&lt;br /&gt;* there is no seperate size for each of these.&lt;br /&gt;* data can be added into any of these, till the whole 50GB gets full...&lt;br /&gt;* still MOVIES , PROJECTS, DOCUMENTS can be accesed as different file systems&lt;br /&gt;* they can be mounted, and un mounted seperately..&lt;br /&gt;&lt;br /&gt;Now,&lt;br /&gt;* u buy a new harddisk (120 GB)&lt;br /&gt;* u plug-in the harddisk...&lt;br /&gt;* boot ur system...&lt;br /&gt;* "a single command" (pool -add /dev/my_new_harddisk already_existing_pool)&lt;br /&gt;* NO-RE-FORMATTING ur harddisk&lt;br /&gt;* [new space 50 + 120 GB]&lt;br /&gt;* data can be added into any of MOVIES , PROJECTS, DOCUMENTS , till the whole 50GB + 120GB gets full...&lt;br /&gt;&lt;br /&gt;it is already implemented in,&lt;br /&gt;ZFS......... Open solaris&lt;br /&gt;ZFS-on-FUSE. LINUX&lt;br /&gt;LVM2 can do this (but not as a readymade file system)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-7310232246527000895?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/7310232246527000895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=7310232246527000895' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7310232246527000895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/7310232246527000895'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2009/01/why-pfs.html' title='WHY PFS ?'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-4992922058277436700</id><published>2008-11-30T15:35:00.006+05:30</published><updated>2009-01-28T19:18:58.563+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='zfs'/><category scheme='http://www.blogger.com/atom/ns#' term='pfs'/><title type='text'>Going thro ZFS</title><content type='html'>&lt;span style="font-family:verdana;font-size:100%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ZFS&lt;/span&gt; is seriously a great  work of open &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;solaris&lt;/span&gt;. After a long time, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;I'm&lt;/span&gt; understanding the arch of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ZFS&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ZFS&lt;/span&gt; is a file system that is built upon &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ZPOOLS&lt;/span&gt;. By going through the zfs-on-fuse.blogspot.com, i got to know that &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;porting&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;zpool&lt;/span&gt; is not tat difficult job. still as a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;beginner&lt;/span&gt;, i would find it difficult. I would keep things posted... bye.. :)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-4992922058277436700?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/4992922058277436700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=4992922058277436700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/4992922058277436700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/4992922058277436700'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2008/11/going-thro-zfs.html' title='Going thro ZFS'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-418544312332569488.post-517109537349062507</id><published>2008-09-07T19:55:00.004+05:30</published><updated>2009-01-28T19:19:17.957+05:30</updated><title type='text'>My new FILE SYSTEM... PFS</title><content type='html'>&lt;span style="font-family:verdana;font-size:100%;"&gt;guys, I'm writing a new file system. for Linux... Pooled storage File System.... This is actually the derivative of Zettabyte file system of Open Solaris... i'm trying to implement few of its features in Linux  i think this is the first step for my dream OS!&lt;br /&gt;&lt;br /&gt;http://www.geocities.com/ravikiran_uvs/articles/rkfs.html  gives a nice introduction to linux virtual file system..&lt;br /&gt;if anyone interested,please join me for this project.. lets do it together.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/418544312332569488-517109537349062507?l=pfs-inodz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pfs-inodz.blogspot.com/feeds/517109537349062507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=418544312332569488&amp;postID=517109537349062507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/517109537349062507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/418544312332569488/posts/default/517109537349062507'/><link rel='alternate' type='text/html' href='http://pfs-inodz.blogspot.com/2008/09/my-new-file-system-pfs.html' title='My new FILE SYSTEM... PFS'/><author><name>Rajgopal V</name><uri>http://www.blogger.com/profile/03636079031313355273</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/_7AI8hFtTHeY/SukdEIhYzXI/AAAAAAAAAFg/SfBUndqt-w8/S220/Smile+000.jpg'/></author><thr:total>0</thr:total></entry></feed>
