<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Hello, Poorinima and Soumya,</p>
<p><br>
</p>
<p>Thanks for your kind reply.&nbsp;</p>
<p>As you said, for the &quot;first&quot; lookup(called in fuse_first_lookup), xdata will be set &quot;gfid-req&quot;, which will miss the md-cache, and then call other translators.</p>
<p><br>
</p>
<p>However, in fuse_getattr, when nodeid==1, gfid-req is set to &quot;gfid-req&quot;, too. That is to say, every fuse_getattr in root, a lookup with &quot;gfid-req&quot; is called,&nbsp;this call will
<b>miss the md-cache</b>, then takes a high cost.&nbsp;</p>
<p><br>
</p>
<p><b>Is it necessary to lookup with &quot;gfid-req&quot; in fuse_getattr?&nbsp;</b></p>
<p><br>
</p>
<p>In fact, whether we lookup with a &quot;gfid-req&quot; decides the performance of fuse_getattr. In my case, I need to call many times fuse_getattr, so it does matter!</p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
<div id="x_Signature">
<div style="font-size:12pt; color:#000000; background-color:#ffffff; font-family:Calibri,Arial,Helvetica,sans-serif">
&nbsp;</div>
<div style="font-size:12pt; color:#000000; background-color:#ffffff; font-family:Calibri,Arial,Helvetica,sans-serif">
Best regards,</div>
<div style="font-size:12pt; color:#000000; background-color:#ffffff; font-family:Calibri,Arial,Helvetica,sans-serif">
Zhitao Li</div>
<div style="font-size:12pt; color:#000000; background-color:#ffffff; font-family:Calibri,Arial,Helvetica,sans-serif">
&nbsp;</div>
<div id="x_divtagdefaultwrapper" style="font-size:12pt; color:#000000; background-color:#ffffff; font-family:Calibri,Arial,Helvetica,sans-serif">
Sent from <a href="http://aka.ms/weboutlook" id="LPNoLP">Outlook</a></div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Poornima Gurusiddaiah &lt;pgurusid@redhat.com&gt;<br>
<b>Sent:</b> Tuesday, March 21, 2017 3:07:01 PM<br>
<b>To:</b> Soumya Koduri<br>
<b>Cc:</b> Zhitao Li; Gluster Devel; Zhitao Li; 1318078301@qq.com<br>
<b>Subject:</b> Re: [Gluster-devel] What does xdata mean? &quot;gfid-req&quot;?</font>
<div>&nbsp;</div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText"><br>
<br>
----- Original Message -----<br>
&gt; From: &quot;Soumya Koduri&quot; &lt;skoduri@redhat.com&gt;<br>
&gt; To: &quot;Zhitao Li&quot; &lt;zhitaoli1201@outlook.com&gt;, &quot;Gluster Devel&quot; &lt;gluster-devel@gluster.org&gt;<br>
&gt; Cc: &quot;Zhitao Li&quot; &lt;zhitaoli1201@163.com&gt;, 1318078301@qq.com, &quot;Poornima Gurusiddaiah&quot; &lt;pgurusid@redhat.com&gt;<br>
&gt; Sent: Monday, March 20, 2017 2:21:12 PM<br>
&gt; Subject: Re: [Gluster-devel] What does xdata mean? &quot;gfid-req&quot;?<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; On 03/18/2017 06:51 PM, Zhitao Li wrote:<br>
&gt; &gt; Hello, everyone,<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; I am investigating&nbsp; the difference between stat and lookup operations in<br>
&gt; &gt; GlusterFs now. In the translator named &quot;md_cache&quot;, stat operation will<br>
&gt; &gt; hit the cache generally, while lookup operation will miss the cache.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; The reason is that for lookup operation, md_cache will check whether the<br>
&gt; &gt; xdata is satisfied. In my case, lookup will include xdata &quot;gfid-req&quot;<br>
&gt; &gt; filled by fuse-bridge. However, in md_cache, this check never pass<br>
&gt; &gt; because the load flag of mdc_key &quot;gfid-req&quot;&nbsp; is always 0.<br>
&gt; <br>
&gt; Client(in this case fuse-bridge) generates gfid and sets it as xdata<br>
&gt; 'gfid-req' key during the first lookup so as to let server heal the<br>
&gt; file/dir with the missing gfid (if any) with the newly generated one.<br>
&gt; <br>
&gt; I guess md-cache ignores the LOOKUP fop with this xdata key set as it<br>
&gt; implies that its the first lookup done by the client. Even if it doesn't<br>
&gt; filter it out, the file/dir entry will not be present in the<br>
&gt; cache then. Subsequent LOOKUPs should be served from md-cache. Poornima<br>
&gt; (cc'ed) shall be able to clarify the actual reason.<br>
<br>
Yes, gfid-req will be set only on the first lookup. If not then that definitely<br>
needs to be looked at.<br>
<br>
&gt; <br>
&gt; Thanks,<br>
&gt; Soumya<br>
&gt; <br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Could anyone tell me why &quot;gfid-req&quot; is filled by<br>
&gt; &gt; fuse-bridge.c(fuse_getattr: nodeid==1-&gt;lookup)? What does it mean? And<br>
&gt; &gt; how xdata is used?<br>
&gt; <br>
&gt; <br>
&gt; &gt;<br>
&gt; &gt; If no xdata, what would happen?<br>
&gt; &gt;<br>
&gt; &gt; Thank you!<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Best regards,<br>
&gt; &gt; Zhitao Li<br>
&gt; &gt;<br>
&gt; &gt; Sent from Outlook &lt;<a href="http://aka.ms/weboutlook">http://aka.ms/weboutlook</a>&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Gluster-devel mailing list<br>
&gt; &gt; Gluster-devel@gluster.org<br>
&gt; &gt; <a href="http://lists.gluster.org/mailman/listinfo/gluster-devel">http://lists.gluster.org/mailman/listinfo/gluster-devel</a><br>
&gt; &gt;<br>
&gt; <br>
</div>
</span></font>
</body>
</html>