Procházet zdrojové kódy

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

Fixes #5558
Anthony Romano před 9 roky
rodič
revize
54aac4ab7e
1 změnil soubory, kde provedl 3 přidání a 2 odebrání
  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)
 		}
 	}