Use current_kernel_time() in the time compatibility wrappers
Since the Linux kernel's utimens family of functions uses current_kernel_time(), we need to do the same in the context of ZFS or else there can be discrepencies in timestamps (they go backward) if userland code does: fd = creat(FNAME, 0600); (void) futimens(fd, NULL); The getnstimeofday() function generally returns a slightly lower time value. Signed-off-by: Tim Chase <tim@chase2k.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes zfsonlinux/zfs#3006
This commit is contained in:
parent
03a783534a
commit
47af4b76ff
|
@ -54,17 +54,14 @@
|
||||||
static inline void
|
static inline void
|
||||||
gethrestime(timestruc_t *now)
|
gethrestime(timestruc_t *now)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
*now = current_kernel_time();
|
||||||
getnstimeofday(&ts);
|
|
||||||
now->tv_sec = ts.tv_sec;
|
|
||||||
now->tv_nsec = ts.tv_nsec;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline time_t
|
static inline time_t
|
||||||
gethrestime_sec(void)
|
gethrestime_sec(void)
|
||||||
{
|
{
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
getnstimeofday(&ts);
|
ts = current_kernel_time();
|
||||||
return (ts.tv_sec);
|
return (ts.tv_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue