[LU-14439] EXT2_FLAG_IGNORE_SB_ERRORS undeclared Created: 16/Feb/21 Updated: 19/Mar/22 Resolved: 19/Mar/22 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Olaf Faaland | Assignee: | Andreas Dilger |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | llnl | ||
| Environment: |
RH 7.9 |
||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||
| Description |
|
Server Build with ldiskfs of 2.14 RC 3 on RHEL 7.9 system fails due to 3 undefined symbols: libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -include /g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/undef.h -include /g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/config.h -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lnet/include/uapi -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lustre/include/uapi -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/libcfs/include -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lnet/utils -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lustre/include -fPIC -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -g -O2 -Werror -Wall -Werror -c liblustreapi_fid.c -fPIC -DPIC -o .libs/liblustreapi_fid.o
libmount_utils_ldiskfs.c:92:4: error: 'EXT2_FLAG_IGNORE_SB_ERRORS' undeclared here (not in a function)
EXT2_FLAG_IGNORE_SB_ERRORS | EXT2_FLAG_SUPER_ONLY;
^
libmount_utils_ldiskfs.c: In function 'ldiskfs_write_ldd':
libmount_utils_ldiskfs.c:167:3: error: implicit declaration of function 'ext2fs_has_feature_mmp' [-Werror=implicit-function-declaration]
if (!backfs || !ext2fs_has_feature_mmp(backfs->super)) {
^
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -include /g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/undef.h -include /g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/config.h -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lnet/include/uapi -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lustre/include/uapi -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/libcfs/include -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lnet/utils -I/g/g0/faaland1/rpmbuild/BUILD/lustre-2.14.0_rc3_1atest/lustre/include -fPIC -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DLUSTRE_UTILS=1 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -g -O2 -Werror -Wall -Werror -c liblustreapi_nodemap.c -o liblustreapi_nodemap.o >/dev/null 2>&1
libmount_utils_ldiskfs.c: In function 'ldiskfs_enable_quota':
libmount_utils_ldiskfs.c:1394:2: error: implicit declaration of function 'ext2fs_has_feature_quota' [-Werror=implicit-function-declaration]
if (backfs && ext2fs_has_feature_quota(backfs->super)) {
^
cc1: all warnings being treated as errors
make[4]: *** [libmount_utils_ldiskfs_a-libmount_utils_ldiskfs.o] Error 1
We have e2fsprogs-devel-1.42.9-19.el7.x86_64 which doesn't define that macro: [root@opal185:~]# grep 'define EXT2_FLAG' /usr/include/ext2fs/ext2fs.h | tail #define EXT2_FLAG_JOURNAL_DEV_OK 0x1000 #define EXT2_FLAG_IMAGE_FILE 0x2000 #define EXT2_FLAG_EXCLUSIVE 0x4000 #define EXT2_FLAG_SOFTSUPP_FEATURES 0x8000 #define EXT2_FLAG_NOFREE_ON_ERROR 0x10000 #define EXT2_FLAG_64BITS 0x20000 #define EXT2_FLAG_PRINT_PROGRESS 0x40000 #define EXT2_FLAG_DIRECT_IO 0x80000 #define EXT2_FLAG_SKIP_MMP 0x100000 #define EXT2_FLAG_FLUSH_NO_SYNC 1 Do we need to update the specfile BuildRequires to require a newer version of e2fsprogs-devel? Or can we work around this to allow builds on RH 7.9? |
| Comments |
| Comment by Andreas Dilger [ 17/Feb/21 ] |
|
Olaf, is this build problem being seen on the client or server? On a client-only (./configure --disable-server) build, the libmount_utils-ldiskfs file probably shouldn't be built at all. On a server, the latest e2fsprogs should be used (at least 1.45.6-wc1, but prefer the very latest 1.45.6-wc5 as described in lustre/ChangeLog). The EXT2_FLAG_IGNORE_SB_ERRORS was added in e2fsprogs-1.44.3 in 2018-06, but e2fsprogs-1.42.9 was released back in 2013-12. |
| Comment by Olaf Faaland [ 17/Feb/21 ] |
|
Hi Andreas, On a server. Shouldn't this: BuildRequires: e2fsprogs-devel be this? BuildRequires: e2fsprogs-devel >= 1.45.6-wc1 That BuildRequires is indeed in the section for the osd-ldiskfs-mount subpackage, so it's only enforced when building the server. |
| Comment by Olaf Faaland [ 17/Feb/21 ] |
|
I think this caught me by surprise partly because we've been building Lustre 2.12 ldiskfs packages under RHEL 7 with the RH supplied e2fsprogs for long enough I don't remember doing it any other way. I didn't hear from other sites that the ldiskfs we built wasn't working, but I don't know whether that's because they didn't use our packages or because everything worked fine. I am sure that they install the whamcloud e2fsprogs along with lustre on their servers. thanks (by the way, the e2fsprogs-devel-1.45.6-1.el8 shipped with RHEL 8.3 has |
| Comment by Gerrit Updater [ 18/Feb/21 ] |
|
Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/41682 |
| Comment by Gerrit Updater [ 18/Feb/21 ] |
|
Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/41683 |
| Comment by Olaf Faaland [ 22/Feb/21 ] |
|
No need for topllnl now that we have these patches. |
| Comment by Gerrit Updater [ 26/Feb/21 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/41682/ |
| Comment by Alexander Lezhoev [ 09/Mar/21 ] |
|
Alphabetic suffixes in BuildRequires cause weird version comparison: e2fsprogs build with "1.45.6.zx" version will meet this requirement, "1.45.6.ab" will not. Cray/HPE's "cr1" suffix has bad luck. Andreas, is it agreeable to keep just "e2fsprogs-devel >= 1.45.6"?
|
| Comment by Andreas Dilger [ 09/Mar/21 ] |
|
diff could you please clarify, maybe in the form of a patch? The current .spec looks like: BuildRequires: e2fsprogs-devel >= 1.44.3 Requires: ldiskfsprogs >= 1.45.6.wc1 so there is no alphabetical suffix for BuildRequires. It would probably be fine to remove the .wc1 suffix from the Requires: line, because only Lustre-patches e2fsprogs will provide ldiskfsprogs, so any version is OK |
| Comment by Alexander Lezhoev [ 10/Mar/21 ] |
|
My bad, I meant Requires and asking about removing .wc1 suffix from here. |
| Comment by Andreas Dilger [ 19/Mar/22 ] |
|
Shaun's patch https://review.whamcloud.com/46340 "U-13906 build: Enable using ldiskfsprogs without wc tag" addresses this issue. |