mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-27 14:36:16 +01:00
g_file_set_contents(): use posix_fallocate()
Extents-based filesystems like knowing in advance how much data will be written to a file in order to prevent fragmentation. If we have it, use posix_fallocate() before writing data in g_file_set_contents(). https://bugzilla.gnome.org/show_bug.cgi?id=701560
This commit is contained in:
parent
b935059738
commit
d3be43fcc5
@ -1056,7 +1056,7 @@ AC_MSG_RESULT($glib_ssize_type)
|
||||
# Check for some functions
|
||||
AC_CHECK_FUNCS(lstat strerror strsignal memmove vsnprintf stpcpy strcasecmp strncasecmp poll getcwd vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
|
||||
AC_CHECK_FUNCS(chown lchmod lchown fchmod fchown link utimes getgrgid getpwuid getresuid)
|
||||
AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat)
|
||||
AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat posix_fallocate)
|
||||
# Check for high-resolution sleep functions
|
||||
AC_CHECK_FUNCS(splice)
|
||||
AC_CHECK_FUNCS(prlimit)
|
||||
|
@ -1060,6 +1060,13 @@ write_to_temp_file (const gchar *contents,
|
||||
{
|
||||
gsize n_written;
|
||||
|
||||
#ifdef HAVE_POSIX_FALLOCATE
|
||||
/* We do this on a 'best effort' basis... It may not be supported
|
||||
* on the underlying filesystem.
|
||||
*/
|
||||
(void) posix_fallocate (fd, 0, length);
|
||||
#endif
|
||||
|
||||
errno = 0;
|
||||
|
||||
n_written = fwrite (contents, 1, length, file);
|
||||
|
Loading…
Reference in New Issue
Block a user