2
2
mirror of https://github.com/octoleo/restic.git synced 2024-11-16 01:57:10 +00:00
restic/internal/restorer/preallocate_darwin.go

29 lines
555 B
Go
Raw Normal View History

package restorer
import (
"os"
"golang.org/x/sys/unix"
)
func preallocateFile(wr *os.File, size int64) error {
// try contiguous first
fst := unix.Fstore_t{
Flags: unix.F_ALLOCATECONTIG | unix.F_ALLOCATEALL,
Posmode: unix.F_PEOFPOSMODE,
Offset: 0,
Length: size,
}
2021-04-10 14:54:07 +00:00
err := unix.FcntlFstore(wr.Fd(), unix.F_PREALLOCATE, &fst)
if err == nil {
return nil
}
// just take preallocation in any form, but still ask for everything
fst.Flags = unix.F_ALLOCATEALL
2021-04-10 14:54:07 +00:00
err = unix.FcntlFstore(wr.Fd(), unix.F_PREALLOCATE, &fst)
return err
}