influxdb/pkg/file/file_unix.go

36 lines
791 B
Go

// +build !windows
package file
import (
"os"
"syscall"
)
func SyncDir(dirName string) error {
// fsync the dir to flush the rename
dir, err := os.OpenFile(dirName, os.O_RDONLY, os.ModeDir)
if err != nil {
return err
}
defer dir.Close()
// While we're on unix, we may be running in a Docker container that is
// pointed at a Windows volume over samba. That doesn't support fsyncs
// on directories. This shows itself as an EINVAL, so we ignore that
// error.
err = dir.Sync()
if pe, ok := err.(*os.PathError); ok && pe.Err == syscall.EINVAL {
err = nil
} else if err != nil {
return err
}
return dir.Close()
}
// RenameFile will rename the source to target using os function.
func RenameFile(oldpath, newpath string) error {
return os.Rename(oldpath, newpath)
}