Hi, I'm trying to build a third party module with the OFED 1.4.0 kernel-ib-devel /usr/src/ofa_kernel tree (as it uses the OFED stack). In my compiler flags I include:
-I/usr/src/ofa_kernel/include -I/usr/src/ofa_kernel/kernel_addons/backport/2.6.18-EL5.2/include/linux/ prior to any of the regular kernel module build includes. The result is not good though: In file included from /cache/build/BUILD/lustre-1.8.0/lustre/llite/llite_nfs.c:45: /cache/build/BUILD/lustre-kernel-2.6.18/lustre/kernel-ib-devel/usr/src/ofa_kernel/include/linux/exportfs.h:145: error: redefinition of 'struct export_operations' /cache/build/BUILD/lustre-1.8.0/lustre/llite/llite_nfs.c:243: error: unknown field 'get_dentry' specified in initializer /cache/build/BUILD/lustre-1.8.0/lustre/llite/llite_nfs.c:243: warning: excess elements in struct initializer /cache/build/BUILD/lustre-1.8.0/lustre/llite/llite_nfs.c:243: warning: (near initialization for 'lustre_export_operations') The problem comes from the fact that llite_nfs.c does a: #ifdef HAVE_LINUX_EXPORTFS_H #include <linux/exportfs.h> #endif because it needs "struct export_operations" which in later kernels, as you know, got moved to that header -- and had it's members changed. There is no get_dentry member in the exportfs.h version of it. The problem arises from the inclusion of both <kernel_source>/include/linux/fs.h and /usr/src/ofa_kernel/include/linux/exportfs.h which both define struct export_operations; How can I resolve this conflict? Am I specifying the various includes (ofed generic, ofed backport, kernel regular) in the wrong order? I would have thought surely, you would want /usr/src/ofa_kernel/include/ to be preferred so that it's rdma/ and scsi/ paths override what's in the kernel, but of course, that brings with it everything added to the include/ subdir. How can I resolve this conflict? Thanx, b. _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
