Checking for lustre/lustre_user.h in a configure script
generates a warning because of the included <sys/quota.h>
checking lustre/lustre_user.h usability... no
checking lustre/lustre_user.h presence... yes
WARNING: present but cannot be compiled
WARNING: check for missing prerequisite headers?
WARNING: see the Autoconf documentation
WARNING: section "Present But Cannot Be Compiled"
WARNING: proceeding with the preprocessor's result
WARNING: in the future, the compiler will take precedence
Looking into config.log it shows:
In file included from /usr/include/lustre/lustre_user.h:59,
from conftest.c:91:
/usr/include/sys/quota.h:221: error: expected declaration
specifiers or '...' before 'caddr_t'
Since we don't really need much from the <sys/quota.h> header,
add conditional #defines for the few needed fields.
The FASYNC constant is not declared everywhere in userspace,
provide a compat declaration if unavailable.
Lustre-change: https://review.whamcloud.com/33876
Lustre-commit:
db0592145574c5ad22a7b7372b06ba2da7d85a60
Test-Parameters: trivial
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I9cd2b0fcbaf16fe8a5a4a7a0309aada3a72cab07
Reviewed-by: Wang Shilong <wshilong@ddn.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/34064
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
# include <linux/string.h> /* snprintf() */
# include <linux/version.h>
#else /* !__KERNEL__ */
-# define NEED_QUOTA_DEFS
# include <limits.h>
# include <stdbool.h>
# include <stdio.h> /* snprintf() */
# include <string.h>
-# include <sys/quota.h>
+# define NEED_QUOTA_DEFS
+/* # include <sys/quota.h> - this causes complaints about caddr_t */
# include <sys/stat.h>
#endif /* __KERNEL__ */
#include <lustre/ll_fiemap.h>
"project", /* PRJQUOTA */ \
"undefined", \
};
+#ifndef USRQUOTA
+#define USRQUOTA 0
+#endif
+#ifndef GRPQUOTA
+#define GRPQUOTA 1
+#endif
+#ifndef PRJQUOTA
#define PRJQUOTA 2
+#endif
#if defined(__x86_64__) || defined(__ia64__) || defined(__ppc64__) || \
defined(__craynv) || defined(__mips64__) || defined(__powerpc64__) || \
/* To be compatible with old statically linked binary we keep the check for
* the older 0100000000 flag. This is already removed upstream. LU-812. */
#define O_LOV_DELAY_CREATE_1_8 0100000000 /* FMODE_NONOTIFY masked in 2.6.36 */
+#ifndef FASYNC
+#define FASYNC 00020000 /* fcntl, for BSD compatibility */
+#endif
#define O_LOV_DELAY_CREATE_MASK (O_NOCTTY | FASYNC)
#define O_LOV_DELAY_CREATE (O_LOV_DELAY_CREATE_1_8 | \
O_LOV_DELAY_CREATE_MASK)