<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Oct 21, 2019 at 1:02 PM Changwei Ge &lt;<a href="mailto:chge@linux.alibaba.com">chge@linux.alibaba.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Amar,<br>
<br>
Thank you very much for your quick reply :-)<br>
<br>
On 2019/10/21 2:44 下午, Amar Tumballi wrote:<br>
&gt; <br>
&gt; <br>
&gt; On Mon, Oct 21, 2019 at 11:58 AM Changwei Ge &lt;<a href="mailto:chge@linux.alibaba.com" target="_blank">chge@linux.alibaba.com</a> <br>
&gt; &lt;mailto:<a href="mailto:chge@linux.alibaba.com" target="_blank">chge@linux.alibaba.com</a>&gt;&gt; wrote:<br>
&gt; <br>
&gt;     Hi,<br>
&gt; <br>
&gt;     I am recently working on optimizing inode searching/getting/putting<br>
&gt;     concurrency. Before the experiment/trial goes, I would like to get<br>
&gt;     fully<br>
&gt;     understand what the usage of several lists of inode table, especially<br>
&gt;     for &#39;invalidate list&#39;, since the major difficulty making inode<br>
&gt;     searching<br>
&gt;     run concurrently is that We have to move inode from one list to the<br>
&gt;     other and modify some attributes against inode table.<br>
&gt;     After reading corresponding code, it seems that inode table &#39;invalidate<br>
&gt;     list&#39; is only retrieved when destroying inode<br>
&gt;     table(inode_table_destroy).<br>
&gt; <br>
&gt;     Can someone help explain the list usage/purpose of &#39;invalidate list&#39;?<br>
&gt; <br>
&gt; <br>
&gt; &#39;invalidate_list&#39; is used only in client side. The patch which got it is <br>
&gt; below:<br>
&gt; <br>
&gt; <a href="https://github.com/gluster/glusterfs/commit/d49b41e817d592c1904b6f01716df6546dad3ebe" rel="noreferrer" target="_blank">https://github.com/gluster/glusterfs/commit/d49b41e817d592c1904b6f01716df6546dad3ebe</a> <br>
&gt; <br>
&gt; <br>
&gt; Hope this gives some idea.<br>
<br>
Cool, this helps me to understand more deeply on inode table.<br>
I will check out other related commits as well.<br>
<br>
&gt; <br>
&gt; Happy to help. If there is an interest, we can even have a video <br>
&gt; conference for all interested developers to discuss inode table, and <br>
&gt; detail out how it is done.<br>
&gt; <br>
<br>
Ack.<br>
As I think that inode table(how we manage inode/dentry) is one of the <br>
most critical parts of a certain type of FS, we should consider and <br>
design carefully hence run it efficiently.<br>
What I can see from glusterfs HEAD code is that we might have many <br>
locking contentions and burden too much logic into inode_[un]ref().<br></blockquote><div><br></div><div>This is true. And I tried couple of approaches. Couldn&#39;t get to take it to completion earlier.</div><div><br></div><div>* <a href="https://review.gluster.org/22242">https://review.gluster.org/22242</a></div><div>* <a href="https://review.gluster.org/22243">https://review.gluster.org/22243</a><br></div><div>* <a href="https://review.gluster.org/22186">https://review.gluster.org/22186</a></div><div>* <a href="https://review.gluster.org/22156">https://review.gluster.org/22156</a></div><div><br></div><div>* <a href="https://github.com/gluster/glusterfs/issues/204">https://github.com/gluster/glusterfs/issues/204</a></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
So how can we arrange a video conference and have a further discussion?<br>
<br></blockquote><div><br></div><div>Open for suggestions. We have weekly Community meeting, which can be extended to talk about this.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Thanks,<br>
Changwei<br>
<br>
&gt; For getting complete history of changes to inode.c (from <br>
&gt; <a href="https://github.com/amarts/glusterfs/commit/72db44413ce4686b465c29ea8383fa4f09f53a76" rel="noreferrer" target="_blank">https://github.com/amarts/glusterfs/commit/72db44413ce4686b465c29ea8383fa4f09f53a76</a>), <br>
&gt; you can clone <a href="http://github.com/amarts/glusterfs" rel="noreferrer" target="_blank">github.com/amarts/glusterfs</a> <br>
&gt; &lt;<a href="http://github.com/amarts/glusterfs" rel="noreferrer" target="_blank">http://github.com/amarts/glusterfs</a>&gt; and see that over time what changes <br>
&gt; got into the file... &#39;git log libglusterfs/src/inode.c&#39; gives an idea.<br>
&gt; <br>
&gt; Regards,<br>
&gt; Amar<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt;     Thanks,<br>
&gt;     Changwei<br>
&gt; <br>
</blockquote></div></div>