cea-hpc / robinhood

Robinhood Policy Engine : a versatile tool to monitor filesystem contents and schedule actions on filesystem entries.
http://robinhood.sf.net
Other
177 stars 60 forks source link

Lustre 2.15 Compile Issue #127

Open jdmaloney opened 1 year ago

jdmaloney commented 1 year ago

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.

CanWood commented 1 year ago

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

jdmaloney commented 1 year ago

@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.

AlienYouth commented 9 months ago

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!