Things to do this week instead of arguing about mixers

Eric Sandeen sandeen at redhat.com
Tue May 12 15:50:22 UTC 2009


Pádraig Brady wrote:
> Eric Sandeen wrote:
>> Now that we have ext4 as the new default filesystem, it'd be nice if we
>> can get more applications to take advantage of some of the features.
>>
>> One big feature that has already been brought up on the list[1] is file
>> preallocation, which allows an application to pre-allocate blocks it
>> knows that it will eventually write into, thereby making sure it won't
>> run out of space, and also generally getting a more efficient/contiguous
>> file layout.
>>
> 
> [snip]
> 
>> fallocate(2):
>> long fallocate(int fd, int mode, loff_t offset, loff_t len);
>>
>> This is directly wired to the syscall, so only succeeds on filesystems
>> that support it.  It also takes a FALLOC_FL_KEEP_SIZE mode argument,
>> which allows one to allocate blocks without updating the file size if
>> desired (blocks can then be allocated past EOF).  This call is only
>> wired up in very recent glibc, but it is available in F11.
> 
> I tried using fallocate() on glibc-2.9.90-22.
> The man-pages are out of date and say the glibc interface is not available,

oops :)  Mind filing a bug on that against man-pages?

> but from inspecting the headers I came up with the test prog below.
> However I get a link error if I uncomment #define _FILE_OFFSET_BITS 64.
> What am I missing?

on which arch?  what's the link error?

Thanks,
-Eric

> cheers,
> Pádraig.
> 
> //#define _FILE_OFFSET_BITS 64
> #define _GNU_SOURCE
> #include <fcntl.h>
> #include <linux/falloc.h>
> 
> #include <stdio.h>
> #include <stdlib.h>
> #include <string.h>
> #include <sys/types.h>
> #include <inttypes.h>
> 
> int main (int argc, char** argv)
> {
>     char* endptr;
>     off_t len = strtoll(argv[1], &endptr, 10);
>     fprintf(stderr, "setting to %jd\n", (intmax_t)len);
>     int ret = fallocate(1, 0, 0, len);
>     fprintf(stderr, "ret=%d (%s)\n", ret, strerror(ret));
> }
> 
> 
> 




More information about the devel mailing list