Linux 2.6.23; not yet released [[TableOfContents()]] == Short overview (for news sites, etc) == 2.6.23 includes the fallocate() syscall == Important things (AKA: ''the cool stuff'') == === fallocate() === The new fallocate() system call allows applications to preallocate space for a file (http://lwn.net/Articles/226710/). Each file system implementation that wants to use this feature will need to support an inode operation called fallocate. Applications can use this feature to avoid fragmentation to certain level and thus get faster access speed. With preallocation, applications also get a guarantee of space for particular file(s) - even if later the system becomes full [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=97ac73506c0ba93f30239bb57b4cfc5d73e68a62 (commit)]. == Miscellaneous kernel-userland changes == === open() O_CLOEXEC flag === 2.6.23 adds a new O_CLOEXEC flag for open(2) (http://lwn.net/Articles/236843/) [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f23513e8d96cf5e6cf8d2ff0cb5dd6bbc33995e4 (commit)] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4a19542e5f694cd408a32c3d9dc593ba9366e2d7 (commit)]. This flag makes it possible to avoid race conditions in multithreaded applications that do the following: 1. Thread A: fd=open() 1. Thread B: fork + exec 1. Thread A: fcntl(fd,F_SETFD,FD_CLOEXEC) (Instead, Thread A would drop the fcntl() call and just open the file with O_CLOEXEC.)