X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a95f899d7ac84f29b3d019aa410d265bb40833e5..a02b4f41cb495ecfea49ac0da1f6da0aec385f7d:/services/keepstore/volume_unix.go diff --git a/services/keepstore/volume_unix.go b/services/keepstore/volume_unix.go index 7aff85e59a..5982fb0484 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. @@ -307,7 +306,7 @@ var blockFileRe = regexp.MustCompile(`^[0-9a-f]{32}$`) // e4de7a2810f5554cd39b36d8ddb132ff+67108864 1388701136 // func (v *UnixVolume) IndexTo(prefix string, w io.Writer) error { - var lastErr error = nil + var lastErr error rootdir, err := os.Open(v.root) if err != nil { return err @@ -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() @@ -398,10 +397,8 @@ func (v *UnixVolume) Trash(loc string) error { // anyway (because the permission signatures have expired). if fi, err := os.Stat(p); err != nil { return err - } else { - if time.Since(fi.ModTime()) < blobSignatureTTL { - return nil - } + } else if time.Since(fi.ModTime()) < blobSignatureTTL { + return nil } if trashLifetime == 0 { @@ -507,11 +504,14 @@ func (v *UnixVolume) String() string { return fmt.Sprintf("[UnixVolume %s]", v.root) } -// Writable returns false if all future Put, Mtime, and Delete calls are expected to fail. +// Writable returns false if all future Put, Mtime, and Delete calls +// are expected to fail. func (v *UnixVolume) Writable() bool { return !v.readonly } +// Replication returns the number of replicas promised by the +// underlying device (currently assumed to be 1). func (v *UnixVolume) Replication() int { return 1 }