<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:15:38 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-1322] 1.8 client hang with 1.8.4 server</title>
                <link>https://jira.whamcloud.com/browse/LU-1322</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;During running some tests, we found client hang during tests. Further investigation shows that it is because client is looping for ever in ll_readdir_page(). The first ll_dir_dentry is correct but some of following up ll_dir_dentry record is all NULL.&lt;/p&gt;

&lt;p&gt;crash&amp;gt; struct ll_dir_entry 0xffff8105f5818000&lt;br/&gt;
struct ll_dir_entry {&lt;br/&gt;
  lde_inode = 748257583,&lt;br/&gt;
  lde_rec_len = 12,&lt;br/&gt;
  lde_name_len = 1 &apos;\001&apos;,&lt;br/&gt;
  lde_file_type = 2 &apos;\002&apos;,&lt;br/&gt;
  lde_name = &quot;.\000\000\000\200\202\230,\f\000\002\002..\000\0000\201\231,\024\000\n\001ssciohb.nrat1\201\231,\020\000\005\001krsni8552\201\231,\020\000\005\001nticpemc3\201\231,\020\000\b\001crn.wole4\201\231,\f\000\003\001lsrt5\201\231,\024\000\n\001loita.hdal2.6\201\231,\024\000\n\001feekg.vsri9\0007\201\231,\024\000\f\001lgaumt.ggesd8\201\231,\024\000\v\001eilltn.ncsr.9\201\231,\020\000\b\001sai.blol:\201\231,\024\000\t\001rnbtmru.sing;\201\231,\020\000\006\001eta.fo64&amp;lt;\201\231,\f\000\003\001rkr.=\201\231,\020\000\005\001aco.d13&quot;&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;crash&amp;gt; struct ll_dir_entry 0xffff8105f5818a19&lt;br/&gt;
struct ll_dir_entry {&lt;br/&gt;
  lde_inode = 0,&lt;br/&gt;
  lde_rec_len = 0,&lt;br/&gt;
  lde_name_len = 0 &apos;\0&apos;,&lt;br/&gt;
  lde_file_type = 0 &apos;\0&apos;,&lt;br/&gt;
  lde_name = &quot;\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000&quot;&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;After applying bellow changes, tests passes smoothly and the debug message is printed a lot.&lt;/p&gt;

&lt;p&gt;diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c&lt;br/&gt;
index 3154d32..3b9779b 100644&lt;br/&gt;
&amp;#8212; a/lustre/llite/dir.c&lt;br/&gt;
+++ b/lustre/llite/dir.c&lt;br/&gt;
@@ -327,6 +327,12 @@ static int ll_readdir_page(char *addr, __u64 base, unsigned *offset,&lt;br/&gt;
         de = ll_entry_at(addr, *offset);&lt;br/&gt;
         end = addr + CFS_PAGE_SIZE - ll_dir_rec_len(1);&lt;br/&gt;
         for (nr = 0 ;(char*)de &amp;lt;= end; de = ll_dir_next_entry(de)) {&lt;br/&gt;
+                if (de-&amp;gt;lde_rec_len == 0) &lt;/p&gt;
{
+                        printk(&quot;bergwolf debug\n&quot;);
+                        printk(&quot;de %p lde_inode %d lde_rec_len %d lde_name_len %d lde_file_type %d\n&quot;,
+                                de, de-&amp;gt;lde_inode, de-&amp;gt;lde_rec_len, de-&amp;gt;lde_name_len, de-&amp;gt;lde_file_type);
+                        break;
+                }
&lt;p&gt;                 if (de-&amp;gt;lde_inode != 0) {&lt;br/&gt;
                         nr++;&lt;br/&gt;
                         *offset = (char *)de - addr;&lt;/p&gt;


&lt;p&gt;It may not be the right fix as I didn&apos;t figure out why the page is partially zeroed.&lt;/p&gt;</description>
                <environment>CentOS 5 with 1.8.6-WC1 clients and 1.8.4 servers.</environment>
        <key id="14009">LU-1322</key>
            <summary>1.8 client hang with 1.8.4 server</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.whamcloud.com/images/icons/priorities/major.svg">Major</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="keith">Keith Mannthey</assignee>
                                    <reporter username="bergwolf">Peng Tao</reporter>
                        <labels>
                            <label>emc</label>
                            <label>patch</label>
                    </labels>
                <created>Fri, 13 Apr 2012 10:48:10 +0000</created>
                <updated>Fri, 22 Feb 2013 11:14:02 +0000</updated>
                            <resolved>Fri, 4 Jan 2013 21:35:57 +0000</resolved>
                                    <version>Lustre 1.8.6</version>
                    <version>Lustre 1.8.x (1.8.0 - 1.8.5)</version>
                                    <fixVersion>Lustre 1.8.9</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                            <comments>
                            <comment id="41070" author="bergwolf" created="Mon, 25 Jun 2012 05:37:31 +0000"  >&lt;p&gt;This is also reproduced with 1.8.8-WC1 clients.&lt;/p&gt;

&lt;p&gt;From a generated kernel dump, it appears that there are only three valid dentries in the page, starting from offset 0, 12, 24. However, in ll_readdir(), kernel is asking to read a dentry from page offset 90 and therefore read into garbage data.&lt;/p&gt;

&lt;p&gt;crash&amp;gt; struct ll_dir_entry 0xffff88051bd73000&lt;br/&gt;
struct ll_dir_entry {&lt;br/&gt;
  lde_inode = 200449640,&lt;br/&gt;
  lde_rec_len = 12,&lt;br/&gt;
  lde_name_len = 1 &apos;\001&apos;,&lt;br/&gt;
  lde_file_type = 2 &apos;\002&apos;,&lt;br/&gt;
  lde_name = &quot;.\000\000\000\001\000\362\v\f\000\002\002..\000\000i\236\362\v\350\017\r\001validate_file\000\000\000j\236\362\v\320\017\001\001\061alidate_file_2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000&quot;&lt;br/&gt;
}&lt;br/&gt;
crash&amp;gt; struct ll_dir_entry 0xffff88051bd7300c&lt;br/&gt;
struct ll_dir_entry {&lt;br/&gt;
  lde_inode = 200409089,&lt;br/&gt;
  lde_rec_len = 12,&lt;br/&gt;
  lde_name_len = 2 &apos;\002&apos;,&lt;br/&gt;
  lde_file_type = 2 &apos;\002&apos;,&lt;br/&gt;
  lde_name = &quot;..\000\000i\236\362\v\350\017\r\001validate_file\000\000\000j\236\362\v\320\017\001\001\061alidate_file_2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000&quot;&lt;br/&gt;
}&lt;br/&gt;
crash&amp;gt; struct ll_dir_entry 0xffff88051bd73018&lt;br/&gt;
struct ll_dir_entry {&lt;br/&gt;
  lde_inode = 200449641,&lt;br/&gt;
  lde_rec_len = 4072,&lt;br/&gt;
  lde_name_len = 13 &apos;\r&apos;,&lt;br/&gt;
  lde_file_type = 1 &apos;\001&apos;,&lt;br/&gt;
  lde_name = &quot;validate_file\000\000\000j\236\362\v\320\017\001\001\061alidate_file_2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000&quot;&lt;br/&gt;
}&lt;/p&gt;

&lt;p&gt;Although it doesn&apos;t make much sense for application to seek randomly within dir page, Lustre should really work with the situation.&lt;/p&gt;</comment>
                            <comment id="41085" author="bergwolf" created="Mon, 25 Jun 2012 09:42:41 +0000"  >&lt;p&gt;patch has been uploaded to &lt;a href=&quot;http://review.whamcloud.com/#change,3181&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,3181&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="48503" author="keith" created="Wed, 28 Nov 2012 16:38:40 +0000"  >&lt;p&gt;This patch has been properly acked for acceptace but not much code is being taken into 1.8 at this point.  As this is a Major bug I am sure it is still under consideration. &lt;/p&gt;</comment>
                            <comment id="49989" author="keith" created="Fri, 4 Jan 2013 21:35:57 +0000"  >&lt;p&gt;This code has been merged. &lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10040" key="com.atlassian.jira.plugin.system.customfieldtypes:labels">
                        <customfieldname>Epic</customfieldname>
                        <customfieldvalues>
                                        <label>interoperability</label>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzv39j:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4028</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>