mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 08:22: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:
		
				
					committed by
					
						 Matthias Clasen
						Matthias Clasen
					
				
			
			
				
	
			
			
			
						parent
						
							5d1969c8cb
						
					
				
				
					commit
					2d827a25af
				
			| @@ -992,7 +992,7 @@ AC_MSG_RESULT(unsigned $glib_size_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) | ||||
|   | ||||
| @@ -1059,6 +1059,13 @@ write_to_temp_file (const gchar  *contents, | ||||
|   if (length > 0) | ||||
|     { | ||||
|       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; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user