pkg/fileutil: fall back to truncate() if fallocate is interrupted

Fixes #5558
This commit is contained in:
Anthony Romano 2016-06-06 09:52:34 -07:00
parent c093234e3a
commit 54aac4ab7e

View File

@ -26,8 +26,9 @@ func preallocExtend(f *os.File, sizeInBytes int64) error {
err := syscall.Fallocate(int(f.Fd()), 0, 0, sizeInBytes)
if err != nil {
errno, ok := err.(syscall.Errno)
// treat not support as nil error
if ok && errno == syscall.ENOTSUP {
// not supported; fallback
// fallocate EINTRs frequently in some enviroments; fallback
if ok && (errno == syscall.ENOTSUP || errno == syscall.EINTR) {
return preallocExtendTrunc(f, sizeInBytes)
}
}