unbrice / shake

Shake is a defragmenter that runs in userspace
Other
44 stars 5 forks source link

Fallback on posix_fallocate if fallocate fail #28

Open Celelibi opened 2 years ago

Celelibi commented 2 years ago

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?

unbrice commented 2 years ago

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.

Celelibi commented 2 years ago

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.