- struct timeval tv[2];
-
- /* Set {a,m}time of volatile file to that of original. */
- tv[0].tv_sec = hcp->stat.st_atime;
- tv[0].tv_usec = 0;
- tv[1].tv_sec = hcp->stat.st_mtime;
- tv[1].tv_usec = 0;
- if (futimes(hcp->data_fd, tv) < 0) {
+ struct ll_futimes_3 lfu = {
+ .lfu_atime_sec = hcp->stat.st_atim.tv_sec,
+ .lfu_atime_nsec = hcp->stat.st_atim.tv_nsec,
+ .lfu_mtime_sec = hcp->stat.st_mtim.tv_sec,
+ .lfu_mtime_nsec = hcp->stat.st_mtim.tv_nsec,
+ .lfu_ctime_sec = hcp->stat.st_ctim.tv_sec,
+ .lfu_ctime_nsec = hcp->stat.st_ctim.tv_nsec,
+ };
+
+ rc = fsync(hcp->data_fd);
+ if (rc < 0) {