<html><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif;font-size:8pt"><div><span>David / Dan / Anand,</span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><br><span></span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><span>Thank you for all the suggestions. I will make a note of the points, and will get back here if I have anything to report or doubts.</span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica
 Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><br><span></span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><span>Thanks a lot,</span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><br><span></span></div><div style="color: rgb(0, 0, 0); font-size: 10.6667px; font-family: Helvetica Neue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,Sans-Serif; background-color: transparent; font-style: normal;"><span>Vimal<br></span></div> <div class="qtdSeparateBR"><br><br></div><div style="display: block;" class="yahoo_quoted"> <div
 style="font-family: Helvetica Neue-Light, Helvetica Neue Light, Helvetica Neue, Helvetica, Arial, Lucida Grande, Sans-Serif; font-size: 8pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> On Tuesday, 2 September 2014 8:50 PM, Anand Avati &lt;avati@gluster.org&gt; wrote:<br> </font> </div>  <br><br> <div class="y_msg_container"><div id="yiv9695472571"><div><div dir="ltr"><br clear="none"><div class="yiv9695472571gmail_extra"><br clear="none"><br clear="none"><div class="yiv9695472571gmail_quote">On Mon, Sep 1, 2014 at 6:07 AM, Vimal A R <span dir="ltr">&lt;<a rel="nofollow" shape="rect" ymailto="mailto:arvimal@yahoo.in" target="_blank" href="mailto:arvimal@yahoo.in">arvimal@yahoo.in</a>&gt;</span> wrote:<br clear="none">
<blockquote class="yiv9695472571gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hello fuse-devel / fs-cache / gluster-devel lists,<br clear="none">
<br clear="none">
I would like to propose the idea of implementing FS-Cache support in the fuse kernel module, which I am planning to do as part of my UG university course. This proposal is by no means final, since I have just started to look into this.<br clear="none">

<br clear="none">
There are several user-space filesystems which are based on the FUSE kernel module. As of now, if I understand correct, the only networked filesystems having FS-Cache support are NFS and AFS.<br clear="none">
<br clear="none">
Implementing support hooks for fs-cache in the fuse module would provide networked filesystems such as GlusterFS the benefit of&nbsp; a client-side caching mechanism, which should decrease the access times.<br clear="none"></blockquote><div>
<br clear="none"></div><div>If you are planning to test this with GlusterFS, note that one of the first challenges would be to have persistent filehandles in FUSE. While GlusterFS has a notion of a persistent handle (GFID, 128bit) which is constant across clients and remounts, the FUSE kernel module is presented a transient LONG (64/32 bit) which is specific to the mount instance (actually, the address of the userspace inode_t within glusterfs process - allows for constant time filehandle resolution).</div>
<div><br clear="none"></div><div>This would be a challenge with any FUSE based filesystem which has persistent filehandles larger than 64bit.</div><div><br clear="none"></div><div>Thanks</div><div class="yiv9695472571yqt8000248471" id="yiv9695472571yqtfd18423"><div><br clear="none"></div><div>&nbsp;</div><blockquote class="yiv9695472571gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

When enabled, FS-Cache would maintain a virtual indexing tree to cache the data or object-types per network FS. Indices in the tree are used by FS-Cache to find objects faster. The tree or index structure under the main network FS index depends on the filesystem. Cookies are used to represent the indices, the pages etc..<br clear="none">

<br clear="none">
The tree structure would be as following:<br clear="none">
<br clear="none">
a) The virtual index tree maintained by fs-cache would look like:<br clear="none">
<br clear="none">
* FS-Cache master index -&gt; The network-filesystem indice (NFS/AFS etc..) -&gt; per-share indices -&gt; File-handle indices -&gt; Page indices<br clear="none">
<br clear="none">
b) In case of FUSE-based filesystems, the tree would be similar to :<br clear="none">
<br clear="none">
* FS-Cache master index -&gt; FUSE indice -&gt; Per FS indices -&gt; file-handle indices -&gt; page indices.<br clear="none">
<br clear="none">
c) In case of FUSE based filesystems as GlusterFS, the tree would as :<br clear="none">
<br clear="none">
* FS-Cache master index -&gt; FUSE indice (fuse.glusterfs) -&gt; GlusterFS volume ID (a UUID exists for each volume) - &gt; GlusterFS file-handle indices (based on the GFID of a file) -&gt; page indices.<br clear="none">
<br clear="none">
The idea is to enable FUSE to work with the FS-Cache network filesystem API, which is documented at '<a rel="nofollow" shape="rect" target="_blank" href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/netfs-api.txt">https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/netfs-api.txt</a>'.<br clear="none">

<br clear="none">
The implementation of FS-Cache support in NFS can be taken as a guideline to understand and start off.<br clear="none">
<br clear="none">
I will reply to this mail with any other updates that would come up whilst pursuing this further. I request any sort of feedback/suggestions, ideas, any pitfalls etc.. that can help in taking this further.<br clear="none">
<br clear="none">
Thank you,<br clear="none">
<br clear="none">
Vimal<br clear="none">
<br clear="none">
References:<br clear="none">
* <a rel="nofollow" shape="rect" target="_blank" href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/fscache.txt">https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/fscache.txt</a><br clear="none">

* <a rel="nofollow" shape="rect" target="_blank" href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/netfs-api.txt">https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/netfs-api.txt</a><br clear="none">

* <a rel="nofollow" shape="rect" target="_blank" href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/object.txt">https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/caching/object.txt</a><br clear="none">

* <a rel="nofollow" shape="rect" target="_blank" href="http://people.redhat.com/dhowells/fscache/FS-Cache.pdf">http://people.redhat.com/dhowells/fscache/FS-Cache.pdf</a><br clear="none">
* <a rel="nofollow" shape="rect" target="_blank" href="http://people.redhat.com/steved/fscache/docs/HOWTO.txt">http://people.redhat.com/steved/fscache/docs/HOWTO.txt</a><br clear="none">
* <a rel="nofollow" shape="rect" target="_blank" href="https://en.wikipedia.org/wiki/CacheFS">https://en.wikipedia.org/wiki/CacheFS</a><br clear="none">
* <a rel="nofollow" shape="rect" target="_blank" href="https://lwn.net/Articles/160122/">https://lwn.net/Articles/160122/</a><br clear="none">
* <a rel="nofollow" shape="rect" target="_blank" href="http://www.linux-mag.com/id/7378/">http://www.linux-mag.com/id/7378/</a><br clear="none">
_______________________________________________<br clear="none">
Gluster-devel mailing list<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:Gluster-devel@gluster.org" target="_blank" href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="http://supercolony.gluster.org/mailman/listinfo/gluster-devel">http://supercolony.gluster.org/mailman/listinfo/gluster-devel</a><br clear="none">
</blockquote></div></div><div class="yiv9695472571yqt8000248471" id="yiv9695472571yqtfd68760"><br clear="none"></div></div></div></div></div><br><br></div>  </div> </div>  </div> </div></body></html>