<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 29, 2018 at 12:25 PM, Vijay Bellur <span dir="ltr">&lt;<a href="mailto:vbellur@redhat.com" target="_blank">vbellur@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><br><div class="gmail_quote"><span class="gmail-"><div dir="ltr">On Wed, Jun 27, 2018 at 10:15 PM Raghavendra Gowdappa &lt;<a href="mailto:rgowdapp@redhat.com" target="_blank">rgowdapp@redhat.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"><div dir="ltr"><div>All,<br><br>There is a requirement in write-behind where during readdirp we may have to invalidate iatts/stats of some of the children of the directory [1]. For lack of better alternatives I added a dentry list to parent inode which contains all children that&#39;ve been linked (through lookup or readdirp on directory). I myself am not too comfortable with this solution as it might eat up significant memory for large directories.<br><br></div>Thoughts?<br></div></blockquote><div><br></div><div><br></div></span><div>Reading [2] makes me wonder if write-behind is the appropriate place for this change. Shouldn&#39;t md-cache be made aware of inode generations or something similar?</div></div></div></blockquote><div><br></div><div>Both are independent fixes and cater to different issues. The fix for [2] is at <a href="https://review.gluster.org/20410">https://review.gluster.org/20410</a></div><div><br></div><div>The patch which is subject of this mail thread tries to address stat consistency when readdirp is done on a directory containing files having cached writes. If readdirp happen to fetch dentries of these files, stats contained in those dentries can be stale. Consider the following scenario (All following operations happen in a single thread of the application):</div><div><br></div><div>* w1 is done on f1, write syscall completes with success. w1 is cached in write-behind.<br></div><div>* w2 is done on f2, write syscall completes with success. w2 is cached in write-behind.<br></div><div>* readdirp on parent directory is done. In response, f1 and f2 are fetched. stats for f1 and f2 are cached in kernel attribute cache.</div><div>* kernel/application does fstat on f1 and f2. Stats returned wouldn&#39;t account for w1 and w2.</div><div><br></div><div>What patch does is to not send stats for f1 and f2 in readdirp response, so that kernel is forced to do a lookup/getattr which will be serialized with w1 and w2 and fetch correct values.<br></div><div><br></div><div><br></div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><div>Thanks,</div><div>Vijay</div><div><br></div><div>[2] <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1512691#c18" target="_blank">https://bugzilla.redhat.<wbr>com/show_bug.cgi?id=1512691#<wbr>c18</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"><span class="gmail-"><div dir="ltr"><div><br>[1] <a href="https://review.gluster.org/20413" target="_blank">https://review.gluster.org/<wbr>20413</a></div><div><br></div><div>regards,</div><div>Raghavendra<br></div></div></span>
______________________________<wbr>_________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@gluster.org" target="_blank">Gluster-devel@gluster.org</a><br>
<a href="http://lists.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://lists.gluster.org/<wbr>mailman/listinfo/gluster-devel</a></blockquote></div></div>
</blockquote></div><br></div></div>