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
|
# 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(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(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
|
# Check for high-resolution sleep functions
|
||||||
AC_CHECK_FUNCS(splice)
|
AC_CHECK_FUNCS(splice)
|
||||||
AC_CHECK_FUNCS(prlimit)
|
AC_CHECK_FUNCS(prlimit)
|
||||||
|
@ -1059,6 +1059,13 @@ write_to_temp_file (const gchar *contents,
|
|||||||
if (length > 0)
|
if (length > 0)
|
||||||
{
|
{
|
||||||
gsize n_written;
|
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;
|
errno = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user