robinhood
robinhood copied to clipboard
Lustre 2.15 Compile Issue
Hello, We're running DDN's ExaScaler 6.x branch which is Lustre 2.14 technically (but with a ton of 2.15 back-ported features since 2.15 is the LTS).
We're seeing the following when compiling RBH 3.1.7 against this version of Lustre.
lustre_tools.c:857: error: "IOC_MDC_GETFILEINFO_V1" redefined [-Werror]
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
In file included from /usr/include/lustre/lustreapi.h:47,
from ../../src/include/lustre_extended_types.h:45,
from ../../src/include/db_schema.h:32,
from ../../src/include/list_mgr.h:144,
from lustre_tools.c:18:
/usr/include/linux/lustre/lustre_user.h:667: note: this is the location of the previous definition
#define IOC_MDC_GETFILEINFO_V1 _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data_v1 *)
lustre_tools.c: In function 'lustre_mds_stat':
lustre_tools.c:857:37: error: 'IOC_MDC_GETFILEINFO_V1' undeclared (first use in this function)
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^~~~~~~~~~~~~~~~~~~
lustre_tools.c:888:26: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(parentfd, IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^~~~~~~~~~~~~~~~~~~~~~
lustre_tools.c:857:37: note: each undeclared identifier is reported only once for each function it appears in
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^~~~~~~~~~~~~~~~~~~
lustre_tools.c:888:26: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(parentfd, IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^~~~~~~~~~~~~~~~~~~~~~
lustre_tools.c: In function 'lustre_mds_stat_by_fid':
lustre_tools.c:857:37: error: 'IOC_MDC_GETFILEINFO_V1' undeclared (first use in this function)
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^~~~~~~~~~~~~~~~~~~
lustre_tools.c:971:35: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(dirfd(fid_dir_fd), IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[3]: *** [Makefile:453: lustre_tools.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/root/robinhood/rpms/BUILD/robinhood-3.1.7/src/common'
make[2]: *** [Makefile:394: all-recursive] Error 1
make[2]: Leaving directory '/root/robinhood/rpms/BUILD/robinhood-3.1.7/src'
make[1]: *** [Makefile:473: all-recursive] Error 1
make[1]: Leaving directory '/root/robinhood/rpms/BUILD/robinhood-3.1.7'
error: Bad exit status from /var/tmp/rpm-tmp.wL3I5n (%build)
Let me know if there is any additional output or information I can provide to help resolve this.
Hi folks,
Just to add an update / data-point, I am having the same issue compiling a "git checkout 3.1.7" using lustre 2.15.2 on CentOS 7.9
...
lustre_tools.c:857:0: error: "IOC_MDC_GETFILEINFO_V1" redefined [-Werror]
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^
In file included from /usr/include/lustre/lustreapi.h:46:0,
from ../../src/include/lustre_extended_types.h:45,
from ../../src/include/db_schema.h:32,
from ../../src/include/list_mgr.h:144,
from lustre_tools.c:18:
/usr/include/linux/lustre/lustre_user.h:666:0: note: this is the location of the previous definition
#define IOC_MDC_GETFILEINFO_V1 _IOWR(IOC_MDC_TYPE, 22, struct lov_user_mds_data_v1 *)
^
lustre_tools.c: In function 'lustre_mds_stat':
lustre_tools.c:857:37: error: 'IOC_MDC_GETFILEINFO_V1' undeclared (first use in this function)
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^
lustre_tools.c:888:26: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(parentfd, IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^
lustre_tools.c:857:37: note: each undeclared identifier is reported only once for each function it appears in
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^
lustre_tools.c:888:26: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(parentfd, IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^
lustre_tools.c: In function 'lustre_mds_stat_by_fid':
lustre_tools.c:857:37: error: 'IOC_MDC_GETFILEINFO_V1' undeclared (first use in this function)
# define IOC_MDC_GETFILEINFO_V1 IOC_MDC_GETFILEINFO
^
lustre_tools.c:971:35: note: in expansion of macro 'IOC_MDC_GETFILEINFO_V1'
rc = ioctl(dirfd(fid_dir_fd), IOC_MDC_GETFILEINFO_V1, (void *)lmd);
^
cc1: all warnings being treated as errors
make[2]: *** [lustre_tools.lo] Error 1
make[2]: Leaving directory `/usr/local/src/robinhood/src/common'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/robinhood/src'
make: *** [all-recursive] Error 1
Anyone else have successful builds in a similar environment?
Cheers
@CanWood I was able to get around this by commenting out lines 854-858 in the file src/common/lustre_tools.c
doing so allowed me to compile and run things.
I ran into the same issue with 3.1.6 and lustre 2.12 and commented out the same lines (although they're 852-856 in 3.1.6) to build the RPMs. Thanks!