<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:44:53 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-4677] e2fsprogs compile error on ppc64: posix-types.h:48: error: conflicting types for &apos;umode_t&apos;</title>
                <link>https://jira.whamcloud.com/browse/LU-4677</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;While compiling e2fsprogs against Lustre master branch on RHEL6.5/ppc64, I hit the following errors:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;In file included from /root/lustre-release/build/lustre-2.5.56//lustre/include/lustre/lustre_user.h:51,
                 from /root/lustre-release/build/lustre-2.5.56//lustre/include/lustre/lustreapi.h:46,
                 from ../lib/ext2fs/lfsck.h:10,
                 from lfsck_common.c:29:
/root/lustre-release/build/lustre-2.5.56//libcfs/include/libcfs/posix/posix-types.h:48: error: conflicting types for &apos;umode_t&apos;
/usr/include/asm/types.h:31: note: previous declaration of &apos;umode_t&apos; was here
        CC util.c
In file included from /root/lustre-release/build/lustre-2.5.56//lustre/include/lustre/lustre_user.h:51,
                 from /root/lustre-release/build/lustre-2.5.56//lustre/include/lustre/lustreapi.h:46,
                 from ../lib/ext2fs/lfsck.h:10,
                 from lfsck.c:80:
/root/lustre-release/build/lustre-2.5.56//libcfs/include/libcfs/posix/posix-types.h:48: error: conflicting types for &apos;umode_t&apos;
/usr/include/asm/types.h:31: note: previous declaration of &apos;umode_t&apos; was here
make[3]: *** [lfsck_common.o] Error 1
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The build log &quot;build_e2fsprogs.ppc64.log&quot; is attached.&lt;/p&gt;</description>
                <environment>&lt;br/&gt;
Lustre Build: &lt;a href=&quot;http://build.whamcloud.com/job/lustre-master/1909/&quot;&gt;http://build.whamcloud.com/job/lustre-master/1909/&lt;/a&gt;&lt;br/&gt;
Distro/Arch: RHEL6.5/ppc64&lt;br/&gt;
</environment>
        <key id="23337">LU-4677</key>
            <summary>e2fsprogs compile error on ppc64: posix-types.h:48: error: conflicting types for &apos;umode_t&apos;</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</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="yujian">Jian Yu</assignee>
                                    <reporter username="yujian">Jian Yu</reporter>
                        <labels>
                            <label>ppc</label>
                    </labels>
                <created>Thu, 27 Feb 2014 10:46:34 +0000</created>
                <updated>Thu, 22 Nov 2018 23:54:28 +0000</updated>
                            <resolved>Thu, 22 Nov 2018 23:54:28 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>5</watches>
                                                                            <comments>
                            <comment id="78097" author="yujian" created="Fri, 28 Feb 2014 15:07:43 +0000"  >&lt;p&gt;Here is the patch for e2fsprogs master-lustre branch to check if type &#8220;umode_t&#8221; is declared in asm/types.h: &lt;a href=&quot;http://review.whamcloud.com/9437&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/9437&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="78100" author="yujian" created="Fri, 28 Feb 2014 15:26:35 +0000"  >&lt;p&gt;With patch #9437, e2fsprogs passed building on ppc64 node.&lt;/p&gt;

&lt;p&gt;However, it failed at &quot;Running e2fsprogs test suite...&quot; stage:&lt;/p&gt;
&lt;div class=&quot;panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelContent&quot;&gt;
&lt;p&gt;Running e2fsprogs test suite...&lt;/p&gt;

&lt;p&gt;/bin/cp ./mke2fs.conf.in mke2fs.conf&lt;br/&gt;
Creating test_one script...&lt;br/&gt;
Creating test_script...&lt;br/&gt;
cmp: d_loaddump.ver.tmp: No such file or directory&lt;br/&gt;
d_loaddump: debugfs load/dump test: failed&lt;br/&gt;
&amp;#8212; d_loaddump/expect   2014-02-27 09:06:42.000000000 +0000&lt;br/&gt;
+++ d_loaddump.log      2014-02-28 14:45:47.251311888 +0000&lt;br/&gt;
@@ -7,12 +7,26 @@&lt;br/&gt;
 e2fsck -yf -N test_filesys&lt;br/&gt;
 Pass 1: Checking inodes, blocks, and sizes&lt;br/&gt;
 Pass 2: Checking directory structure&lt;br/&gt;
&lt;font color=&quot;red&quot;&gt;+Directory inode 2, block #0, offset 24: directory corrupted&lt;/font&gt;&lt;br/&gt;
+Salvage? yes&lt;br/&gt;
+&lt;br/&gt;
 Pass 3: Checking directory connectivity&lt;br/&gt;
+Unconnected directory inode 11 (/???)&lt;br/&gt;
+Connect to /lost+found? yes&lt;br/&gt;
+&lt;br/&gt;
+/lost+found not found.  Create? yes&lt;br/&gt;
+&lt;br/&gt;
+Pass 3A: Optimizing directories&lt;br/&gt;
 Pass 4: Checking reference counts&lt;br/&gt;
+Inode 11 ref count is 3, should be 2.  Fix? yes&lt;br/&gt;
+&lt;br/&gt;
 Pass 5: Checking group summary information&lt;br/&gt;
-test_filesys: 12/64 files (0.0% non-contiguous), 158/512 blocks&lt;br/&gt;
-Exit status is 0&lt;br/&gt;
+&lt;br/&gt;
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****&lt;br/&gt;
+test_filesys: 13/64 files (0.0% non-contiguous), 148/512 blocks&lt;br/&gt;
+Exit status is 1&lt;br/&gt;
 debugfs -R &apos;&apos;dump test_data d_loaddump.ver.tmp&apos;&apos; test.img&lt;br/&gt;
&lt;font color=&quot;red&quot;&gt;+test_data: EXT2 directory corrupted&lt;/font&gt; &lt;br/&gt;
 Exit status is 0&lt;br/&gt;
 cmp d_loaddump.tmp d_loaddump.ver.tmp&lt;br/&gt;
-Exit status is 0&lt;br/&gt;
+Exit status is 2&lt;br/&gt;
-----------&lt;del&gt;8&amp;lt;&lt;/del&gt;-----------&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;red&quot;&gt;118 tests succeeded     37 tests failed&lt;/font&gt;&lt;br/&gt;
Tests failed: d_loaddump d_special_files f_badroot f_badsymlinks f_badtable f_dir_optimize f_dirdata f_dirdata_optimize f_dup4 f_dup_de f_dup_de2 f_dup_resize f_dupdot f_eofblocks f_expand f_ext_journal f_h_badnode f_h_badroot f_h_reindex f_illitable f_jchksum_remount f_lpf f_lpffile f_noroot f_pgsize_gt_blksize f_random_corruption f_recnect_bad f_reconnect f_rehash_dir f_uninit_bad_free_inodes f_uninit_blk_used_not_set f_uninit_set_inode_not_set f_zero_group f_zero_super m_no_opt s_basic_scan t_quota_1on &lt;br/&gt;
make&lt;span class=&quot;error&quot;&gt;&amp;#91;2&amp;#93;&lt;/span&gt;: *** &lt;span class=&quot;error&quot;&gt;&amp;#91;test_post&amp;#93;&lt;/span&gt; Error 1&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The log of &quot;build_e2fsprogs_rpm.ppc64.log&quot; is attached.&lt;/p&gt;</comment>
                            <comment id="78259" author="jay" created="Mon, 3 Mar 2014 19:23:35 +0000"  >&lt;p&gt;Hi Andreas &amp;amp; Alex,&lt;/p&gt;

&lt;p&gt;Do you have any idea for the error mentioned by Yujian?&lt;/p&gt;

&lt;p&gt;Jinshan&lt;/p&gt;</comment>
                            <comment id="78264" author="adilger" created="Mon, 3 Mar 2014 20:30:01 +0000"  >&lt;p&gt;It is possible that this error is caused by the dirdata patch.  I would suggest to use &quot;git bisect&quot; to try and isolate it quickly.  Please ping me in Skype if you haven&apos;t used this before and want some help.&lt;/p&gt;</comment>
                            <comment id="78265" author="jay" created="Mon, 3 Mar 2014 20:38:35 +0000"  >&lt;p&gt;I can work with Yujian on this - do you have a rough idea about what was the latest working version?&lt;/p&gt;</comment>
                            <comment id="78311" author="adilger" created="Tue, 4 Mar 2014 05:31:11 +0000"  >&lt;p&gt;Note that we have probably never compiled the Lustre-patches e2fsprogs code on PPC. When I was suggesting to bisect the code, I was thinking about the patches that we apply on top of the base e2fsprogs. It is my guess that the base e2fsprogs (before the &quot;Lustre version&quot; patch will not have this problem. &lt;/p&gt;</comment>
                            <comment id="78338" author="yujian" created="Tue, 4 Mar 2014 15:52:59 +0000"  >&lt;blockquote&gt;&lt;p&gt;It is my guess that the base e2fsprogs (before the &quot;Lustre version&quot; patch will not have this problem.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Yes, Andreas, I verified this.&lt;/p&gt;

&lt;p&gt;Here are the commits on e2fsprogs master-lustre branch: &lt;a href=&quot;http://git.whamcloud.com/?p=tools/e2fsprogs.git;a=shortlog;h=refs/heads/master-lustre&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://git.whamcloud.com/?p=tools/e2fsprogs.git;a=shortlog;h=refs/heads/master-lustre&lt;/a&gt;&lt;br/&gt;
Since commit f6632828e4845041bce12f79d8f3aae095534bc6 (e2fsck: handle preallocation for large PAGE_SIZE), &quot;make check&quot; started failing on ppc64 node. And before that commit, &quot;make check&quot; passed.&lt;/p&gt;

&lt;p&gt;Here are the details about which test failures on ppc64 node are introduced by which commits:&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Failed tests&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Introduced by&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_eofblocks&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;e2fsck: handle preallocation for large PAGE_SIZE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_pgsize_gt_blksize&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;tests: PAGE_SIZE larger than blocksize with hole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_badsymlinks f_dup_de2 f_dup_de f_ext_journal f_h_badnode f_h_badroot f_h_reindex f_jchksum_remount f_rehash_dir f_uninit_bad_free_inodes f_uninit_blk_used_not_set f_uninit_set_inode_not_set f_zero_group f_zero_super&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;e2fsck: add support for dir_data feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_dirdata&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;tests: add basic tests for dir_data feature&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_dirdata_optimize f_dir_optimize&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-1774&quot; title=&quot;fsck -fD corrupts filesystem&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-1774&quot;&gt;&lt;del&gt;LU-1774&lt;/del&gt;&lt;/a&gt; tests: e2fsck -D does not change dirdata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;f_random_corruption&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;debugfs: dump &quot;fid&quot; and &quot;lma&quot; xattrs on inode stat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;s_basic_scan&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;tests: add basic test case for e2scan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;d_loaddump d_special_files f_badroot f_badtable f_dup4 f_dupdot f_dup_resize f_expand f_illitable f_lpf f_lpffile f_noroot f_recnect_bad f_reconnect m_no_opt t_quota_1on&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-2462&quot; title=&quot;debugfs doesn&amp;#39;t care about DIRENT_LUFID flag while inserting new entries&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-2462&quot;&gt;&lt;del&gt;LU-2462&lt;/del&gt;&lt;/a&gt; e2fsprogs Consider DIRENT_LUFID flag in link_proc(). &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;Could you and Jinshan please give me some instructions about how to make Lustre e2fsprogs codes pass building on ppc64 node without affecting the testing for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-4665&quot; title=&quot;utils: lfs setstripe to specify OSTs&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-4665&quot;&gt;&lt;del&gt;LU-4665&lt;/del&gt;&lt;/a&gt;? Should I look into the above test failures and resolve them? Thanks a lot in advance.&lt;/p&gt;</comment>
                            <comment id="78379" author="jay" created="Tue, 4 Mar 2014 19:26:51 +0000"  >&lt;p&gt;I;ve added Fanyong to the list because he can provide expertise in this topic.&lt;/p&gt;</comment>
                            <comment id="78436" author="jay" created="Wed, 5 Mar 2014 03:57:16 +0000"  >&lt;p&gt;Fanyong will look into this.&lt;/p&gt;</comment>
                            <comment id="78445" author="yong.fan" created="Wed, 5 Mar 2014 09:40:46 +0000"  >&lt;p&gt;It should be related with bytes order in the structure of &quot;ext2_dirent_entry&quot; and &quot;ext2_dirent_entry_2&quot; on the PPC64 machine.&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;struct ext4_dir_entry {
        __le32  inode;                  &lt;span class=&quot;code-comment&quot;&gt;/* Inode number */&lt;/span&gt;
        __le16  rec_len;                &lt;span class=&quot;code-comment&quot;&gt;/* Directory entry length */&lt;/span&gt;
        __le16  name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;    name[EXT4_NAME_LEN];    &lt;span class=&quot;code-comment&quot;&gt;/* File name */&lt;/span&gt;
};

/*
 * The &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; version of the directory entry.  Since EXT4 structures are
 * stored in intel &lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; order, and the name_len field could never be
 * bigger than 255 chars, it&apos;s safe to reclaim the extra &lt;span class=&quot;code-object&quot;&gt;byte&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the
 * file_type field.
 */
struct ext4_dir_entry_2 {
        __le32  inode;                  &lt;span class=&quot;code-comment&quot;&gt;/* Inode number */&lt;/span&gt;
        __le16  rec_len;                &lt;span class=&quot;code-comment&quot;&gt;/* Directory entry length */&lt;/span&gt;
        __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
        __u8    file_type;
        &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;    name[EXT4_NAME_LEN];    &lt;span class=&quot;code-comment&quot;&gt;/* File name */&lt;/span&gt;
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In fact, the ext4_dir_entry_2::name_len and ext4_dir_entry_2::file_type should be exchanged on PPC64 as following:&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;struct ext2_dir_entry_2 {
        __le32  inode;                  &lt;span class=&quot;code-comment&quot;&gt;/* Inode number */&lt;/span&gt;
        __le16  rec_len;                &lt;span class=&quot;code-comment&quot;&gt;/* Directory entry length */&lt;/span&gt;
#ifndef WORDS_BIGENDIAN
        __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
        __u8    file_type;
#&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt;
        __u8    file_type;
        __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
#endif
        &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;    name[EXT2_NAME_LEN];    &lt;span class=&quot;code-comment&quot;&gt;/* File name */&lt;/span&gt;
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then we can access the ext2_dir_entry::name_len via ext2_dir_entry_2::name_len.&lt;/p&gt;

&lt;p&gt;In fact, because the CPU bytes-order for PPC64 and the on-disk bytes-order are different, any value (not only ext2_dir_dirent, but also others, such as inode, super_block, and so on) which is larger than 1-byte and loaded from disk (write or disk) should be converted via lexx_to_cpu (or cpu_to_lexx). Unfortunately, we missed to do that at a lot of points in current implantation.&lt;/p&gt;

&lt;p&gt;On the other hand, in current implementation, we assume the ext2_dir_entry_2::name_len is lower than ext2_dir_entry_2::file_type, so there are some logic like the following:&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-object&quot;&gt;int&lt;/span&gt;     filetype = dirent-&amp;gt;name_len &amp;gt;&amp;gt; 8;
...
dirent-&amp;gt;name_len = ((dirent-&amp;gt;name_len &amp;amp; 0xFF) | (dirdata | should_be) &amp;lt;&amp;lt; 8);
...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To make the e2fsck workable on PPC64 correctly, all related codes should be well checked and re-considere. In theory, it is not complex, but it involves a lot of trivial things and I am not sure whether there will be other data structures to be handled. We must check carefully one by one. So it is not a simple work.&lt;/p&gt;</comment>
                            <comment id="78587" author="yujian" created="Thu, 6 Mar 2014 14:59:36 +0000"  >&lt;p&gt;By using the following temporary fix suggested by nasf, the number of failed tests was reduced from 37 to 3 (f_eofblocks, f_pgsize_gt_blksize, f_dirdata):&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;diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index a99ab37..95233ba 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -785,11 +785,16 @@ struct ext2_dir_entry {
  * file_type field.
  */
 struct ext2_dir_entry_2 {
-       __u32   inode;                  &lt;span class=&quot;code-comment&quot;&gt;/* Inode number */&lt;/span&gt;
-       __u16   rec_len;                &lt;span class=&quot;code-comment&quot;&gt;/* Directory entry length */&lt;/span&gt;
-       __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
-       __u8    file_type;
-       &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;    name[EXT2_NAME_LEN];    &lt;span class=&quot;code-comment&quot;&gt;/* File name */&lt;/span&gt;
+        __u32   inode;                  &lt;span class=&quot;code-comment&quot;&gt;/* Inode number */&lt;/span&gt;
+        __u16   rec_len;                &lt;span class=&quot;code-comment&quot;&gt;/* Directory entry length */&lt;/span&gt;
+#ifndef WORDS_BIGENDIAN
+        __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
+        __u8    file_type;
+#&lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt;
+        __u8    file_type;
+        __u8    name_len;               &lt;span class=&quot;code-comment&quot;&gt;/* Name length */&lt;/span&gt;
+#endif
+        &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt;    name[EXT2_NAME_LEN];    &lt;span class=&quot;code-comment&quot;&gt;/* File name */&lt;/span&gt;
 };
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After temporarily disabling the 3 failed tests, I successfully built e2fsprogs on the ppc64 node and got the rpm packages.&lt;br/&gt;
I&apos;ll see what errors I&apos;ll hit while testing Lustre server codes on the ppc64 node. In the meantime, nasf will continue digging into the failures and find out more proper way to resolve those failures. Thanks, nasf! &lt;/p&gt;</comment>
                            <comment id="78813" author="adilger" created="Sat, 8 Mar 2014 05:10:31 +0000"  >&lt;p&gt;Looking at the e2fsprogs code, it seems that there is almost no code using ext2_dir_entry_2, it all uses ext2_dir_entry and then masks name_len and shifts down file_type.  Unfortunately, in the e2fsprogs code, the in-memory representation of the directory entry is often already swabbed, so the change to ext2_dir_entry_2 would break for entries that are already swabbed.&lt;/p&gt;

&lt;p&gt;I think it would be better to update the Lustre patches to use ext2_dir_entry and use the mask-and-shift method used by the rest of the code.  Since I&apos;m already updating the e2fsprogs patches to the latest maint release, I will do this part.  I&apos;m not sure what is wrong with the PAGE_SIZE patches or others since I don&apos;t know why they are failing.&lt;/p&gt;</comment>
                            <comment id="78814" author="yong.fan" created="Sat, 8 Mar 2014 06:02:13 +0000"  >&lt;p&gt;About the patch for PAGE_SIZE, I think the tests should be improved. Here are the files in the test image for f_eofblocks:&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;# ls -ail /mnt/mds1
total 75K
   2 drwxr-xr-x    3 root root 1.0K Apr 11  2012 ./
8199 drwxr-xr-x. 115 root root 4.0K Dec 31 01:17 ../
  12 -rw-r--r--    1 root root 1.0K Apr 11  2012 a1
  13 -rw-r--r--    1 root root 1.0K Apr 11  2012 a2
  14 -rw-r--r--    1 root root 1.0K Apr 11  2012 b1
  15 -rw-r--r--    1 root root 1.0K Apr 11  2012 b2
  16 -rw-r--r--    1 root root 2.0K Apr 11  2012 c1
  17 -rw-r--r--    1 root root 2.0K Apr 11  2012 c2
  18 -rw-r--r--    1 root root 2.0K Apr 11  2012 d1
  19 -rw-r--r--    1 root root 2.0K Apr 11  2012 d2
  20 -rw-r--r--    1 root root 2.0K Apr 11  2012 e1
  21 -rw-r--r--    1 root root 2.0K Apr 11  2012 e2
  22 -rw-r--r--    1 root root 1.0K Apr 11  2012 f1
  23 -rw-r--r--    1 root root 1.0K Apr 11  2012 f2
  24 -rw-r--r--    1 root root 4.0K Apr 11  2012 g1
  25 -rw-r--r--    1 root root 4.0K Apr 11  2012 g2
  26 -rw-r--r--    1 root root 4.0K Apr 11  2012 h1
  27 -rw-r--r--    1 root root 4.0K Apr 11  2012 h2
  28 -rw-r--r--    1 root root    0 Apr 11  2012 i1
  29 -rw-r--r--    1 root root    0 Apr 11  2012 i2
  30 -rw-r--r--    1 root root 2.0K Apr 11  2012 j1
  31 -rw-r--r--    1 root root 2.0K Apr 11  2012 j2
  11 drwx------    2 root root  12K Apr 11  2012 lost+found/

root@RHEL6:/tmp/
# stat /mnt/mds1/j1
  File: `/mnt/mds1/j1&apos;
  Size: 2048      	Blocks: 8          IO Block: 1024   regular file
Device: 700h/1792d	Inode: 30          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-04-11 11:26:25.000000000 +0800
Modify: 2012-04-11 11:29:47.000000000 +0800
Change: 2012-04-11 11:29:47.000000000 +0800

root@RHEL6:/tmp/
# stat /mnt/mds1/j2
  File: `/mnt/mds1/j2&apos;
  Size: 2048      	Blocks: 12         IO Block: 1024   regular file
Device: 700h/1792d	Inode: 31          Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-04-11 11:26:30.000000000 +0800
Modify: 2012-04-11 11:29:50.000000000 +0800
Change: 2012-04-11 11:29:50.000000000 +0800
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For the server with 4KB PAGE_SIZE, such as x86_64, the &quot;j1&quot; case is acceptable, but for other large PAGE_SIZE cases, such as 64KB on PPC64, &quot;Blocks: 8&quot; should be for &quot;truncate&quot; case, so the size for &quot;j1&quot; should be 512 * 8 = 4096, but not the showed 2048.&lt;/p&gt;

&lt;p&gt;To make the tests to be workable for difference arch, the file &quot;j1&quot; should be removed from the test image.&lt;/p&gt;</comment>
                            <comment id="237400" author="adilger" created="Thu, 22 Nov 2018 23:54:28 +0000"  >&lt;p&gt;This is fixed in the latest e2fsprogs release.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="25530">LU-5326</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="14183" name="build_e2fsprogs.ppc64.log" size="49845" author="yujian" created="Thu, 27 Feb 2014 10:46:34 +0000"/>
                            <attachment id="14188" name="build_e2fsprogs_rpm.ppc64.log" size="5290250" author="yujian" created="Fri, 28 Feb 2014 15:26:35 +0000"/>
                    </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|hzwg2v:</customfieldvalue>

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