Date: Wed, 05 Nov 2008 11:08:11 -0600 From: "Jeremy Messenger" <mezz7@cox.net> To: freebsd-hackers@freebsd.org Subject: preallocate files without (posix_)fallocate or fcntl's F_PREALLOCATE? Message-ID: <op.uj5okktj9aq2h7@localhost>
next in thread | raw e-mail | index | archive | help
Hello folks, At first, I don't really know C that well so... It's more of request or suggest if anyone is bored or interest to port on FreeBSD. :-) Recently, Transmission has added preallocate files to prevent disk fragmentation but FreeBSD does not has any of (posix_)fallocate or fcntl's F_PREALLOCATE (checked in RELENG_7's src/* and manpages). Here's what it looks like: ---------------------------------------- static int preallocateFile( int fd UNUSED, uint64_t length UNUSED ) { #ifdef HAVE_FALLOCATE return fallocate( fd, 0, offset, length ); #elif defined(HAVE_POSIX_FALLOCATE) return posix_fallocate( fd, 0, length ); #elif defined(SYS_DARWIN) fstore_t fst; fst.fst_flags = F_ALLOCATECONTIG; fst.fst_posmode = F_PEOFPOSMODE; fst.fst_offset = 0; fst.fst_length = length; fst.fst_bytesalloc = 0; return fcntl( fd, F_PREALLOCATE, &fst ); #else #warning no known method to preallocate files on this platform return -1; #endif } ---------------------------------------- You can see a bit more over at http://trac.transmissionbt.com/changeset/7051 .. You can also point me to some sources if it exists for I can try do it by myself, but with lacking C knowledge is a bit hard for me at the most of time. I don't know if UFS does not need or does need it. If anyone is interesting to write simple one for FreeBSD will be cool. Thanks! Cheers, Mezz -- mezz7@cox.net - mezz@FreeBSD.org FreeBSD GNOME Team http://www.FreeBSD.org/gnome/ - gnome@FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?op.uj5okktj9aq2h7>