an interface for filesystem preallocation that doesn't suck?
Eric Sandeen
sandeen at redhat.com
Thu Apr 2 22:35:06 UTC 2009
Rahul Sundaram wrote:
> Eric Sandeen wrote:
>> James Ralston wrote:
>>
>>> If the latter, is there an interface for fallocate() that doesn't have
>>> quite as much FAIL as posix_fallocate()?
>> yes, plain ol' fallocate(2), I think:
>>
>> #include <linux/falloc.h>
>>
>> long fallocate(int fd, int mode, loff_t offset, loff_t len);
>>
>> but you need a very recent glibc to get it:
>>
>> http://sourceware.org/bugzilla/show_bug.cgi?id=7083#c1
>>
>> it'd be great if we could get that into F11...
>>
>> BTW, ext4, xfs, btrfs, and ocfs2 all support ->fallocate.
>
> Shouldn't we getting the new glibc and file RFE's against RPM, the
> torrent clients etc?
Ah, just checked and it's already in our rawhide glibc, yay :) didn't
realize that.
http://sandeen.fedorapeople.org/utilities/fallocate.c
is a simple tool to exercise it, FWIW.
One caveat: ext4 doesn't always coalesce extents, so preallocating for,
say, bittorent won't necessarily get ext4 down to tracking a single
extent; in my testing it can still have thousands of extents tracked by
the filesystem even if they are adjacent/contiguous. :( I hope to fix
that. It's still worth doing though; a thousand adjacent extents is
better than a thousand discontiguous extents.
-Eric
More information about the fedora-devel-list
mailing list