unbrice / shake

Shake is a defragmenter that runs in userspace

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fallback on posix_fallocate if fallocate fail

Celelibi opened this issue · comments

Not every FS support the fallocate system call. Falling back to posix_fallocate would allow more compatibility at the expense of some performance penalty. But I think it's worth it. Maybe with a one-time warning?

Which OS do you have in mind? On GNU/Linux, posix_fallocate is implemented using fallocate (see posix_fallocate.c), so that wouldn't increase compatiblity.

In the glibc posix_fallocate is implemented using the fallocate syscall first. But falls back onto an emulated implentation if the syscall fail with EOPNOTSUPP. This implementation should work on almost every file system.