X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/959f37498c5f1610612452ab227ba4680b30e8e6..257d60253246952b435cea23b1912af80ea2c6d6:/services/keepstore/volume_unix.go?ds=inline diff --git a/services/keepstore/volume_unix.go b/services/keepstore/volume_unix.go index edec048dfe..90189dc36c 100644 --- a/services/keepstore/volume_unix.go +++ b/services/keepstore/volume_unix.go @@ -138,9 +138,8 @@ func (v *UnixVolume) Touch(loc string) error { return e } defer unlockfile(f) - now := time.Now().Unix() - utime := syscall.Utimbuf{now, now} - return syscall.Utime(p, &utime) + ts := syscall.NsecToTimespec(time.Now().UnixNano()) + return syscall.UtimesNano(p, []syscall.Timespec{ts, ts}) } // Mtime returns the stored timestamp for the given locator. @@ -353,7 +352,7 @@ func (v *UnixVolume) IndexTo(prefix string, w io.Writer) error { _, err = fmt.Fprint(w, name, "+", fileInfo[0].Size(), - " ", fileInfo[0].ModTime().Unix(), + " ", fileInfo[0].ModTime().UnixNano(), "\n") } blockdir.Close() @@ -538,7 +537,7 @@ func (v *UnixVolume) translateError(err error) error { } } -var trashLocRegexp = regexp.MustCompile(`/([0-9a-f]{32})\.trash\.(\d+)$`) +var unixTrashLocRegexp = regexp.MustCompile(`/([0-9a-f]{32})\.trash\.(\d+)$`) // EmptyTrash walks hierarchy looking for {hash}.trash.* // and deletes those with deadline < now. @@ -554,7 +553,7 @@ func (v *UnixVolume) EmptyTrash() { if info.Mode().IsDir() { return nil } - matches := trashLocRegexp.FindStringSubmatch(path) + matches := unixTrashLocRegexp.FindStringSubmatch(path) if len(matches) != 3 { return nil }