瀏覽代碼

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

Fixes #5558
Anthony Romano 9 年之前
父節點
當前提交
54aac4ab7e
共有 1 個文件被更改,包括 3 次插入2 次删除
  1. 3 2
      pkg/fileutil/preallocate_unix.go

+ 3 - 2
pkg/fileutil/preallocate_unix.go

@@ -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)
 		}
 	}