mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-04-13 15:11:45 +03:00
statx(2) requires _GNU_SOURCE to be defined in order for sys/stat.h to
produce a definition for struct statx and the STATX_* defines. We get
that at compile time because we pass -D_GNU_SOURCE through to
everything, but in the configure check we aren't setting _GNU_SOURCE, so
we don't find STATX_MNT_ID, and so don't set HAVE_STATX_MNT_ID.
(This was fine before ccf5a8a6fc, because linux/stat.h does not require
_GNU_SOURCE).
Simple fix: in the check, define _GNU_SOURCE before including
sys/stat.h.
Sponsored-by: TrueNAS
Reviewed-by: Ameer Hamza <ahamza@ixsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@truenas.com>
Closes #18312
37 lines
906 B
Plaintext
37 lines
906 B
Plaintext
dnl # SPDX-License-Identifier: CDDL-1.0
|
|
dnl #
|
|
dnl # Check for statx() function and STATX_MNT_ID availability
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_CONFIG_USER_STATX], [
|
|
AC_CHECK_HEADERS([sys/stat.h],
|
|
[have_stat_headers=yes],
|
|
[have_stat_headers=no])
|
|
|
|
AS_IF([test "x$have_stat_headers" = "xyes"], [
|
|
AC_CHECK_FUNC([statx], [
|
|
AC_DEFINE([HAVE_STATX], [1], [statx() is available])
|
|
|
|
dnl Check for STATX_MNT_ID availability
|
|
AC_MSG_CHECKING([for STATX_MNT_ID])
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([[
|
|
#define _GNU_SOURCE
|
|
#include <sys/stat.h>
|
|
]], [[
|
|
struct statx stx;
|
|
int mask = STATX_MNT_ID;
|
|
(void)mask;
|
|
(void)stx.stx_mnt_id;
|
|
]])
|
|
], [
|
|
AC_MSG_RESULT([yes])
|
|
AC_DEFINE([HAVE_STATX_MNT_ID], [1], [STATX_MNT_ID is available])
|
|
], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
])
|
|
], [
|
|
AC_MSG_WARN([sys/stat.h not found; skipping statx support])
|
|
])
|
|
]) dnl end AC_DEFUN
|