<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:34:58 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-17380] b2_15 sanity test suite running gets stuck at test 64e</title>
                <link>https://jira.whamcloud.com/browse/LU-17380</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When running sanity test suite on openEuler 22.03 with update kernel 153.35.0.112.oe2203sp2,&#160; lustre version is latest b2_15 2.15.4 rc1,&#160; it gets stuck:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
[openeuler@oe2203-test-02 ~]$ sudo&#160; RUNAS_ID=&lt;span class=&quot;code-quote&quot;&gt;&quot;1000&quot;&lt;/span&gt; ~/lustre/lustre-release/lustre/tests/auster&#160; -rvsk sanity --only 50-64
...
== sanity test 64b: check out-of-space detection on client ========================================================== 09:53:13 (1702979593)
STRIPECOUNT=2 ORIGFREE=551632 MAXFREE=800000
BEFORE dd started
lustre-OST0000 avl=273288 grnt=260362 diff=12926 limit=11131
lustre-OST0001 avl=278344 grnt=276135 diff=2209 limit=11131 FULL
lt-lfs setstripe: unable to open &lt;span class=&quot;code-quote&quot;&gt;&apos;/mnt/lustre/oosfile&apos;&lt;/span&gt;: Read-only file system (30)
&#160; Trace dump:
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/oos.sh:37:main()
oos: FAIL: test-framework exiting on error
&#160;sanity test_64b: @@@@@@ FAIL: oos.sh failed: 30&#160;
&#160; Trace dump:
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/test-framework.sh:6427:error()
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/sanity.sh:8816:test_64b()
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/test-framework.sh:6744:run_one()
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/test-framework.sh:6791:run_one_logged()
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/test-framework.sh:6617:run_test()
&#160; = /home/openeuler/lustre/lustre-release/lustre/tests/sanity.sh:8818:main()
Dumping lctl log to /tmp/test_logs/2023-12-19/094338/sanity.test_64b.*.1702979595.log
Dumping logs only on local client.
FAIL 64b (3s)== sanity test 64c: verify grant shrink ================== 09:53:16 (1702979596)
osc.lustre-OST0000-osc-ffff3c548183a800.cur_grant_bytes=0
checking grant......UUID &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 1K-blocks &#160; &#160; &#160; &#160;Used &#160; Available Use% Mounted on
lustre-MDT0000_UUID &#160; &#160; &#160; 125056 &#160; &#160; &#160; &#160;8608 &#160; &#160; &#160;105212 &#160; 8% /mnt/lustre[MDT:0] R
lustre-OST0000_UUID &#160; &#160; &#160; 313104 &#160; &#160; &#160; 12656 &#160; &#160; &#160;273288 &#160; 5% /mnt/lustre[OST:0]&#160;
lustre-OST0001_UUID &#160; &#160; &#160; 313104 &#160; &#160; &#160; &#160;7600 &#160; &#160; &#160;278344 &#160; 3% /mnt/lustre[OST:1]&#160;filesystem_summary: &#160; &#160; &#160; 626208 &#160; &#160; &#160; 20256 &#160; &#160; &#160;551632 &#160; 4% /mnt/lustrepass grant check: client:286814208 server:286814208
PASS 64c (0s)== sanity test 64d: check grant limit exceed ============= 09:53:16 (1702979596)
lt-lfs setstripe: unable to open &lt;span class=&quot;code-quote&quot;&gt;&apos;/mnt/lustre/f64d.sanity&apos;&lt;/span&gt;: Read-only file system (30)
dd: failed to open &lt;span class=&quot;code-quote&quot;&gt;&apos;/mnt/lustre/f64d.sanity&apos;&lt;/span&gt;: Read-only file system
/home/openeuler/lustre/lustre-release/lustre/tests/sanity.sh: line 8898: kill: (213825) - No such process
checking grant......UUID &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 1K-blocks &#160; &#160; &#160; &#160;Used &#160; Available Use% Mounted on
lustre-MDT0000_UUID &#160; &#160; &#160; 125056 &#160; &#160; &#160; &#160;8608 &#160; &#160; &#160;105212 &#160; 8% /mnt/lustre[MDT:0] R
lustre-OST0000_UUID &#160; &#160; &#160; 313104 &#160; &#160; &#160; 12656 &#160; &#160; &#160;273288 &#160; 5% /mnt/lustre[OST:0]&#160;
lustre-OST0001_UUID &#160; &#160; &#160; 313104 &#160; &#160; &#160; &#160;7600 &#160; &#160; &#160;278344 &#160; 3% /mnt/lustre[OST:1]&#160;filesystem_summary: &#160; &#160; &#160; 626208 &#160; &#160; &#160; 20256 &#160; &#160; &#160;551632 &#160; 4% /mnt/lustrepass grant check: client:286814208 server:286814208
Waiting &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; MDT destroys to complete
PASS 64d (4s)== sanity test 64e: check grant consumption (no grant allocation) ========================================================== 09:53:20 (1702979600)
debug=+cache
Stopping client oe2203-test-02 /mnt/lustre (opts:)
Starting client: oe2203-test-02: &#160;-o user_xattr,flock oe2203-test-02@tcp:/lustre /mnt/lustre
 **Stucks here **&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment>OpenEuler 22.03 LTS SP2&lt;br/&gt;
kernel 153.35.0.112.oe2203sp2+</environment>
        <key id="79662">LU-17380</key>
            <summary>b2_15 sanity test suite running gets stuck at test 64e</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="1" iconUrl="https://jira.whamcloud.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="wc-triage">WC Triage</assignee>
                                    <reporter username="xinliang">Xinliang Liu</reporter>
                        <labels>
                    </labels>
                <created>Wed, 20 Dec 2023 03:17:35 +0000</created>
                <updated>Wed, 27 Dec 2023 08:23:38 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                            <comments>
                            <comment id="397591" author="xinliang" created="Wed, 20 Dec 2023 07:19:25 +0000"  >&lt;p&gt;Narrow down that it is relating to recently backported ext4 patch &quot;&lt;a href=&quot;https://lore.kernel.org/all/20230524034951.779531-2-tytso@mit.edu/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ext4: add EA_INODE checking to ext4_iget()&lt;/a&gt;&quot;.&lt;/p&gt;

&lt;p&gt;The checking to ext4_iget() is:&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
+&lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt; *check_igot_inode(struct inode *inode, ext4_iget_flags flags)
+
+{
+	&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (flags &amp;amp; EXT4_IGET_EA_INODE) {
+		&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!(EXT4_I(inode)-&amp;gt;i_flags &amp;amp; EXT4_EA_INODE_FL))
+			&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;missing EA_INODE flag&quot;&lt;/span&gt;;
+	} &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
+		&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ((EXT4_I(inode)-&amp;gt;i_flags &amp;amp; EXT4_EA_INODE_FL))
+			&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;unexpected EA_INODE flag&quot;&lt;/span&gt;;
+	}
+	&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (is_bad_inode(inode) &amp;amp;&amp;amp; !(flags &amp;amp; EXT4_IGET_BAD))
+		&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;code-quote&quot;&gt;&quot;unexpected bad inode w/o EXT4_IGET_BAD&quot;&lt;/span&gt;;
+	&lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; NULL;
+} &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And from the sanity running kernel log and osd_ldiskfs_iget() code part below, we can see that lustre seems doesn&apos;t allow to get EA inode with this ext4 patch &quot;ext4: add EA_INODE checking to ext4_iget()&quot;&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
[113677.017540] LDISKFS-fs error (device dm-0): osd_iget:503: inode #289: comm OI_scrub: unexpected EA_INODE flag
[113677.020146] LDISKFS-fs error (device dm-0): osd_iget:503: inode #289: comm lfsck: unexpected EA_INODE flag
[113677.021426] Aborting journal on device dm-0-8.
[113677.023049] LDISKFS-fs (dm-0): Remounting filesystem read-only
[113677.174850] LustreError: 136912:0:(osd_handler.c:1790:osd_trans_commit_cb()) transaction @0x00000000ce666d28 commit error: 2
[113677.196990] LustreError: 209429:0:(scrub.c:243:scrub_file_store()) lustre-MDT0000: store scrub file: rc = -30
 &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;lustre/osd-ldiskfs/osd_internal.h&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
 975 #ifdef HAVE_LDISKFS_IGET_WITH_FLAGS
 976 # define osd_ldiskfs_iget(sb, ino) \ &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;
 977 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; ldiskfs_iget((sb), (ino), \
 978  &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; LDISKFS_IGET_HANDLE | LDISKFS_IGET_SPECIAL)
 979 #&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt;
 980 # define osd_ldiskfs_iget(sb, ino) ldiskfs_iget((sb), (ino))
 981 #endif &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is the root cause, osd_iget() fails and make lustre remounting read-only which break the later tests running.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;To be noticed&lt;/b&gt; that the patch &quot;&lt;a href=&quot;https://lore.kernel.org/all/20230524034951.779531-2-tytso@mit.edu/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;ext4: add EA_INODE checking to ext4_iget()&lt;/a&gt;&quot; is introduced in kernel 6.4. Kernel with this patch should have this issue, such as kernel v6.4+, v6.1.33, v5.15.116, openEuler 22.03 kernel 153.35.0.112.oe2203sp2, etc.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="397593" author="xinliang" created="Wed, 20 Dec 2023 07:39:23 +0000"  >&lt;p&gt;Maybe we should explicitly set the iget_flags(if possible) when calling function ldiskfs_iget() like ext4 does now , thus makes check_igot_inode() work.&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
linux$ grep &lt;span class=&quot;code-quote&quot;&gt;&quot;= ext4_iget(&quot;&lt;/span&gt; -rn fs/ext4/ 
fs/ext4/ioctl.c:383:&#160; &#160; inode_bl = ext4_iget(sb, EXT4_BOOT_LOADER_INO,
fs/ext4/resize.c:1720:&#160; &#160; &#160; &#160; &#160; inode = ext4_iget(sb, EXT4_RESIZE_INO, EXT4_IGET_SPECIAL);
fs/ext4/resize.c:2061:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; resize_inode = ext4_iget(sb, EXT4_RESIZE_INO,
fs/ext4/orphan.c:586: &#160; inode = ext4_iget(sb, orphan_ino, EXT4_IGET_SPECIAL);
fs/ext4/block_validity.c:160: &#160; inode = ext4_iget(sb, ino, EXT4_IGET_SPECIAL);
fs/ext4/&lt;span class=&quot;code-keyword&quot;&gt;super&lt;/span&gt;.c:1550: &#160; inode = ext4_iget(sb, ino, EXT4_IGET_HANDLE);
fs/ext4/&lt;span class=&quot;code-keyword&quot;&gt;super&lt;/span&gt;.c:5482: &#160; root = ext4_iget(sb, EXT4_ROOT_INO, EXT4_IGET_SPECIAL);
fs/ext4/&lt;span class=&quot;code-keyword&quot;&gt;super&lt;/span&gt;.c:5788: &#160; journal_inode = ext4_iget(sb, journal_inum, EXT4_IGET_SPECIAL);
fs/ext4/&lt;span class=&quot;code-keyword&quot;&gt;super&lt;/span&gt;.c:7063: &#160; qf_inode = ext4_iget(sb, qf_inums[type], EXT4_IGET_SPECIAL);
fs/ext4/namei.c:1855: &#160; &#160; &#160; &#160; &#160; inode = ext4_iget(dir-&amp;gt;i_sb, ino, EXT4_IGET_NORMAL);
fs/ext4/ialloc.c:1394:&#160; inode = ext4_iget(sb, ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1379: &#160; &#160; inode = ext4_iget(sb, darg.ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1386: &#160; &#160; old_parent = ext4_iget(sb, darg.parent_ino,
fs/ext4/fast_commit.c:1412: &#160; &#160; dir = ext4_iget(sb, darg-&amp;gt;parent_ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1473: &#160; &#160; inode = ext4_iget(sb, darg.ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1534: &#160; &#160; inode = ext4_iget(sb, ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1584: &#160; &#160; inode = ext4_iget(sb, ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1638: &#160; &#160; inode = ext4_iget(sb, darg.ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1651: &#160; &#160; &#160; &#160; &#160; &#160; dir = ext4_iget(sb, darg.parent_ino, EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1738: &#160; &#160; inode = ext4_iget(sb, le32_to_cpu(fc_add_ex.fc_ino), EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1855: &#160; &#160; inode = ext4_iget(sb, le32_to_cpu(lrange.fc_ino), EXT4_IGET_NORMAL);
fs/ext4/fast_commit.c:1911: &#160; &#160; &#160; &#160; &#160; &#160; inode = ext4_iget(sb, state-&amp;gt;fc_modified_inodes[i],
fs/ext4/xattr.c:440:&#160; &#160; inode = ext4_iget(parent-&amp;gt;i_sb, ea_ino, EXT4_IGET_EA_INODE);
fs/ext4/xattr.c:1542: &#160; &#160; &#160; &#160; &#160; ea_inode = ext4_iget(inode-&amp;gt;i_sb, ce-&amp;gt;e_value, &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="398103" author="xinliang" created="Wed, 27 Dec 2023 08:21:58 +0000"  >&lt;p&gt;Or revert check_igot_inode() in ldiskfs series patchset, if we can&apos;t know which kind inode when getting it in code osd_scrub.c, as EA inode is really a kind of internal inode of ext4.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="73421">LU-16350</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="68608">LU-15542</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i045ev:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</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>