]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - config/kernel-inode-times.m4
ztest: use ASSERT3P to compare pointers
[FreeBSD/FreeBSD.git] / config / kernel-inode-times.m4
1 AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_TIMES], [
2
3         dnl #
4         dnl # 5.6 API change
5         dnl # timespec64_trunc() replaced by timestamp_truncate() interface.
6         dnl #
7         ZFS_LINUX_TEST_SRC([timestamp_truncate], [
8                 #include <linux/fs.h>
9         ],[
10                 struct timespec64 ts;
11                 struct inode ip;
12
13                 memset(&ts, 0, sizeof(ts));
14                 ts = timestamp_truncate(ts, &ip);
15         ])
16
17         dnl #
18         dnl # 4.18 API change
19         dnl # i_atime, i_mtime, and i_ctime changed from timespec to timespec64.
20         dnl #
21         ZFS_LINUX_TEST_SRC([inode_times], [
22                 #include <linux/fs.h>
23         ],[
24                 struct inode ip;
25                 struct timespec ts;
26
27                 memset(&ip, 0, sizeof(ip));
28                 ts = ip.i_mtime;
29         ])
30
31         dnl #
32         dnl # 6.6 API change
33         dnl # i_ctime no longer directly accessible, must use
34         dnl # inode_get_ctime(ip), inode_set_ctime*(ip) to
35         dnl # read/write.
36         dnl #
37         ZFS_LINUX_TEST_SRC([inode_get_ctime], [
38                 #include <linux/fs.h>
39         ],[
40                 struct inode ip;
41
42                 memset(&ip, 0, sizeof(ip));
43                 inode_get_ctime(&ip);
44         ])
45
46         ZFS_LINUX_TEST_SRC([inode_set_ctime_to_ts], [
47                 #include <linux/fs.h>
48         ],[
49                 struct inode ip;
50                 struct timespec64 ts = {0};
51
52                 memset(&ip, 0, sizeof(ip));
53                 inode_set_ctime_to_ts(&ip, ts);
54         ])
55
56         dnl #
57         dnl # 6.7 API change
58         dnl # i_atime/i_mtime no longer directly accessible, must use
59         dnl # inode_get_mtime(ip), inode_set_mtime*(ip) to
60         dnl # read/write.
61         dnl #
62         ZFS_LINUX_TEST_SRC([inode_get_atime], [
63                 #include <linux/fs.h>
64         ],[
65                 struct inode ip;
66
67                 memset(&ip, 0, sizeof(ip));
68                 inode_get_atime(&ip);
69         ])
70         ZFS_LINUX_TEST_SRC([inode_get_mtime], [
71                 #include <linux/fs.h>
72         ],[
73                 struct inode ip;
74
75                 memset(&ip, 0, sizeof(ip));
76                 inode_get_mtime(&ip);
77         ])
78
79         ZFS_LINUX_TEST_SRC([inode_set_atime_to_ts], [
80                 #include <linux/fs.h>
81         ],[
82                 struct inode ip;
83                 struct timespec64 ts = {0};
84
85                 memset(&ip, 0, sizeof(ip));
86                 inode_set_atime_to_ts(&ip, ts);
87         ])
88         ZFS_LINUX_TEST_SRC([inode_set_mtime_to_ts], [
89                 #include <linux/fs.h>
90         ],[
91                 struct inode ip;
92                 struct timespec64 ts = {0};
93
94                 memset(&ip, 0, sizeof(ip));
95                 inode_set_mtime_to_ts(&ip, ts);
96         ])
97 ])
98
99 AC_DEFUN([ZFS_AC_KERNEL_INODE_TIMES], [
100         AC_MSG_CHECKING([whether timestamp_truncate() exists])
101         ZFS_LINUX_TEST_RESULT([timestamp_truncate], [
102                 AC_MSG_RESULT(yes)
103                 AC_DEFINE(HAVE_INODE_TIMESTAMP_TRUNCATE, 1,
104                     [timestamp_truncate() exists])
105         ],[
106                 AC_MSG_RESULT(no)
107         ])
108
109         AC_MSG_CHECKING([whether inode->i_*time's are timespec64])
110         ZFS_LINUX_TEST_RESULT([inode_times], [
111                 AC_MSG_RESULT(no)
112         ],[
113                 AC_MSG_RESULT(yes)
114                 AC_DEFINE(HAVE_INODE_TIMESPEC64_TIMES, 1,
115                     [inode->i_*time's are timespec64])
116         ])
117
118         AC_MSG_CHECKING([whether inode_get_ctime() exists])
119         ZFS_LINUX_TEST_RESULT([inode_get_ctime], [
120                 AC_MSG_RESULT(yes)
121                 AC_DEFINE(HAVE_INODE_GET_CTIME, 1,
122                     [inode_get_ctime() exists in linux/fs.h])
123         ],[
124                 AC_MSG_RESULT(no)
125         ])
126
127         AC_MSG_CHECKING([whether inode_set_ctime_to_ts() exists])
128         ZFS_LINUX_TEST_RESULT([inode_set_ctime_to_ts], [
129                 AC_MSG_RESULT(yes)
130                 AC_DEFINE(HAVE_INODE_SET_CTIME_TO_TS, 1,
131                     [inode_set_ctime_to_ts() exists in linux/fs.h])
132         ],[
133                 AC_MSG_RESULT(no)
134         ])
135
136         AC_MSG_CHECKING([whether inode_get_atime() exists])
137         ZFS_LINUX_TEST_RESULT([inode_get_atime], [
138                 AC_MSG_RESULT(yes)
139                 AC_DEFINE(HAVE_INODE_GET_ATIME, 1,
140                     [inode_get_atime() exists in linux/fs.h])
141         ],[
142                 AC_MSG_RESULT(no)
143         ])
144
145         AC_MSG_CHECKING([whether inode_set_atime_to_ts() exists])
146         ZFS_LINUX_TEST_RESULT([inode_set_atime_to_ts], [
147                 AC_MSG_RESULT(yes)
148                 AC_DEFINE(HAVE_INODE_SET_ATIME_TO_TS, 1,
149                     [inode_set_atime_to_ts() exists in linux/fs.h])
150         ],[
151                 AC_MSG_RESULT(no)
152         ])
153
154         AC_MSG_CHECKING([whether inode_get_mtime() exists])
155         ZFS_LINUX_TEST_RESULT([inode_get_mtime], [
156                 AC_MSG_RESULT(yes)
157                 AC_DEFINE(HAVE_INODE_GET_MTIME, 1,
158                     [inode_get_mtime() exists in linux/fs.h])
159         ],[
160                 AC_MSG_RESULT(no)
161         ])
162
163         AC_MSG_CHECKING([whether inode_set_mtime_to_ts() exists])
164         ZFS_LINUX_TEST_RESULT([inode_set_mtime_to_ts], [
165                 AC_MSG_RESULT(yes)
166                 AC_DEFINE(HAVE_INODE_SET_MTIME_TO_TS, 1,
167                     [inode_set_mtime_to_ts() exists in linux/fs.h])
168         ],[
169                 AC_MSG_RESULT(no)
170         ])
171 ])