xref: /freebsd/sys/contrib/openzfs/config/kernel-generic_fillattr.m4 (revision db33c6f3ae9d1231087710068ee4ea5398aacca7)
1dnl #
2dnl # 5.12 API
3dnl #
4dnl # generic_fillattr in linux/fs.h now requires a struct user_namespace*
5dnl # as the first arg, to support idmapped mounts.
6dnl #
7dnl # 6.3 API
8dnl # generic_fillattr() now takes struct mnt_idmap* as the first argument
9dnl #
10dnl # 6.6 API
11dnl # generic_fillattr() now takes u32 as second argument, representing a
12dnl # request_mask for statx
13dnl #
14AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_FILLATTR], [
15	ZFS_LINUX_TEST_SRC([generic_fillattr_userns], [
16		#include <linux/fs.h>
17	],[
18		struct user_namespace *userns = NULL;
19		struct inode *in = NULL;
20		struct kstat *k = NULL;
21		generic_fillattr(userns, in, k);
22	])
23
24	ZFS_LINUX_TEST_SRC([generic_fillattr_mnt_idmap], [
25		#include <linux/fs.h>
26	],[
27		struct mnt_idmap *idmap = NULL;
28		struct inode *in = NULL;
29		struct kstat *k = NULL;
30		generic_fillattr(idmap, in, k);
31	])
32
33	ZFS_LINUX_TEST_SRC([generic_fillattr_mnt_idmap_reqmask], [
34		#include <linux/fs.h>
35	],[
36		struct mnt_idmap *idmap = NULL;
37		struct inode *in = NULL;
38		struct kstat *k = NULL;
39		generic_fillattr(idmap, 0, in, k);
40	])
41])
42
43AC_DEFUN([ZFS_AC_KERNEL_GENERIC_FILLATTR], [
44	AC_MSG_CHECKING(
45	    [whether generic_fillattr requires struct mnt_idmap* and request_mask])
46	ZFS_LINUX_TEST_RESULT([generic_fillattr_mnt_idmap_reqmask], [
47		AC_MSG_RESULT([yes])
48		AC_DEFINE(HAVE_GENERIC_FILLATTR_IDMAP_REQMASK, 1,
49		    [generic_fillattr requires struct mnt_idmap* and u32 request_mask])
50	],[
51		AC_MSG_RESULT([no])
52
53		AC_MSG_CHECKING([whether generic_fillattr requires struct mnt_idmap*])
54		ZFS_LINUX_TEST_RESULT([generic_fillattr_mnt_idmap], [
55			AC_MSG_RESULT([yes])
56			AC_DEFINE(HAVE_GENERIC_FILLATTR_IDMAP, 1,
57				[generic_fillattr requires struct mnt_idmap*])
58		],[
59			AC_MSG_RESULT([no])
60
61			AC_MSG_CHECKING([whether generic_fillattr requires struct user_namespace*])
62			ZFS_LINUX_TEST_RESULT([generic_fillattr_userns], [
63				AC_MSG_RESULT([yes])
64				AC_DEFINE(HAVE_GENERIC_FILLATTR_USERNS, 1,
65					[generic_fillattr requires struct user_namespace*])
66			],[
67				AC_MSG_RESULT([no])
68			])
69		])
70	])
71])
72
73