]>
Commit | Line | Data |
---|---|---|
d4dc53da YY |
1 | AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_SETATTR], [ |
2 | dnl # | |
3 | dnl # Linux 6.3 API | |
4 | dnl # The first arg of setattr I/O operations handler type | |
5 | dnl # is changed to struct mnt_idmap* | |
6 | dnl # | |
7 | ZFS_LINUX_TEST_SRC([inode_operations_setattr_mnt_idmap], [ | |
8 | #include <linux/fs.h> | |
9 | ||
10 | int test_setattr( | |
11 | struct mnt_idmap *idmap, | |
12 | struct dentry *de, struct iattr *ia) | |
13 | { return 0; } | |
14 | ||
15 | static const struct inode_operations | |
16 | iops __attribute__ ((unused)) = { | |
17 | .setattr = test_setattr, | |
18 | }; | |
19 | ],[]) | |
20 | ||
21 | dnl # | |
22 | dnl # Linux 5.12 API | |
23 | dnl # The setattr I/O operations handler type was extended to require | |
24 | dnl # a struct user_namespace* as its first arg, to support idmapped | |
25 | dnl # mounts. | |
26 | dnl # | |
27 | ZFS_LINUX_TEST_SRC([inode_operations_setattr_userns], [ | |
28 | #include <linux/fs.h> | |
29 | ||
30 | int test_setattr( | |
31 | struct user_namespace *userns, | |
32 | struct dentry *de, struct iattr *ia) | |
33 | { return 0; } | |
34 | ||
35 | static const struct inode_operations | |
36 | iops __attribute__ ((unused)) = { | |
37 | .setattr = test_setattr, | |
38 | }; | |
39 | ],[]) | |
40 | ||
41 | ZFS_LINUX_TEST_SRC([inode_operations_setattr], [ | |
42 | #include <linux/fs.h> | |
43 | ||
44 | int test_setattr( | |
45 | struct dentry *de, struct iattr *ia) | |
46 | { return 0; } | |
47 | ||
48 | static const struct inode_operations | |
49 | iops __attribute__ ((unused)) = { | |
50 | .setattr = test_setattr, | |
51 | }; | |
52 | ],[]) | |
53 | ]) | |
54 | ||
55 | AC_DEFUN([ZFS_AC_KERNEL_INODE_SETATTR], [ | |
56 | dnl # | |
57 | dnl # Kernel 6.3 test | |
58 | dnl # | |
59 | AC_MSG_CHECKING([whether iops->setattr() takes mnt_idmap]) | |
60 | ZFS_LINUX_TEST_RESULT([inode_operations_setattr_mnt_idmap], [ | |
61 | AC_MSG_RESULT(yes) | |
62 | AC_DEFINE(HAVE_IDMAP_IOPS_SETATTR, 1, | |
63 | [iops->setattr() takes struct mnt_idmap*]) | |
64 | ],[ | |
65 | AC_MSG_RESULT(no) | |
66 | dnl # | |
67 | dnl # Kernel 5.12 test | |
68 | dnl # | |
69 | AC_MSG_CHECKING([whether iops->setattr() takes user_namespace]) | |
70 | ZFS_LINUX_TEST_RESULT([inode_operations_setattr_userns], [ | |
71 | AC_MSG_RESULT(yes) | |
72 | AC_DEFINE(HAVE_USERNS_IOPS_SETATTR, 1, | |
73 | [iops->setattr() takes struct user_namespace*]) | |
74 | ],[ | |
75 | AC_MSG_RESULT(no) | |
76 | ||
77 | AC_MSG_CHECKING([whether iops->setattr() exists]) | |
78 | ZFS_LINUX_TEST_RESULT([inode_operations_setattr], [ | |
79 | AC_MSG_RESULT(yes) | |
80 | AC_DEFINE(HAVE_IOPS_SETATTR, 1, | |
81 | [iops->setattr() exists]) | |
82 | ],[ | |
83 | AC_MSG_RESULT(no) | |
84 | ]) | |
85 | ]) | |
86 | ]) | |
87 | ]) |