For ZFS, change the type of clock_t to int64_t.
The clock_t type in OpenSolaris is long (int64_t on amd64). On FreeBSD clock_t is int32_t. The clock_t type is used in several places in the ZFS code to store system uptime in milliseconds ("seconds * hz"). With hz=1000 we have a 32-bit integer overflow in 24 days, 20 hours, 31 minutes and 23.648 seconds. This has a user reported negative impact on l2arc_feed_thread() and may cause unexpected results from other functions using clock_t. Reported by: Artem Belevich <fbsdlist@src.cx> on freebsd-fs@ MFC after: 1 week
This commit is contained in:
parent
d690434e20
commit
cab1b4d893
@ -34,6 +34,10 @@
|
||||
*/
|
||||
|
||||
#include <sys/stdint.h>
|
||||
|
||||
typedef int64_t clock_t;
|
||||
#define _CLOCK_T_DECLARED
|
||||
|
||||
#include_next <sys/types.h>
|
||||
|
||||
#define MAXNAMELEN 256
|
||||
|
Loading…
Reference in New Issue
Block a user