X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e386d20665a2bf9a59e314ad9efa5fddfffb8058..95323ba327cadff2d1cb8c3f38c5dbb65dbd3694:/services/keepstore/volume_unix.go diff --git a/services/keepstore/volume_unix.go b/services/keepstore/volume_unix.go index f439978600..4db2a53384 100644 --- a/services/keepstore/volume_unix.go +++ b/services/keepstore/volume_unix.go @@ -103,6 +103,7 @@ func (v *UnixVolume) Touch(loc string) error { if err != nil { return err } + defer f.Close() if e := lockfile(f); e != nil { return e } @@ -112,6 +113,15 @@ func (v *UnixVolume) Touch(loc string) error { return syscall.Utime(p, &utime) } +func (v *UnixVolume) Mtime(loc string) (time.Time, error) { + p := v.blockPath(loc) + if fi, err := os.Stat(p); err != nil { + return time.Time{}, err + } else { + return fi.ModTime(), nil + } +} + // Read retrieves a block identified by the locator string "loc", and // returns its contents as a byte slice. // @@ -250,7 +260,10 @@ func (v *UnixVolume) Delete(loc string) error { if err != nil { return err } - lockfile(f) + defer f.Close() + if e := lockfile(f); e != nil { + return e + } defer unlockfile(f) // If the block has been PUT more recently than -permission_ttl,