On FreeBSD, time_t is 64-bit for all platforms except i386 and powerpc,
where the type is 32-bit. ZFS can handle 64-bit timestamp internally but zfs_setattr() would check if the time value can fit, we change the checking macros to match 64-bit timestamp if the platform supports it. This change has some downsides like, while you can import zfs on 32-bit platforms, the timestamp would overflow if they are out of the range. This fixes the Y2.038K issue on platforms using 64-bit timestamps. Reviewed by: pjd MFC after: 1 month
This commit is contained in:
parent
6941401c87
commit
63243c5c71
@ -40,8 +40,13 @@ typedef longlong_t hrtime_t;
|
||||
|
||||
#define LBOLT ((gethrtime() * hz) / NANOSEC)
|
||||
|
||||
#if defined(__i386__) || defined(__powerpc__)
|
||||
#define TIMESPEC_OVERFLOW(ts) \
|
||||
((ts)->tv_sec < INT32_MIN || (ts)->tv_sec > INT32_MAX)
|
||||
#else
|
||||
#define TIMESPEC_OVERFLOW(ts) \
|
||||
((ts)->tv_sec < INT64_MIN || (ts)->tv_sec > INT64_MAX)
|
||||
#endif
|
||||
|
||||
#ifdef _KERNEL
|
||||
#define lbolt64 (int64_t)(LBOLT)
|
||||
|
Loading…
x
Reference in New Issue
Block a user