Просмотр исходного кода

Check for fdatasync

If we don't have it, fall back to fsync

Fixes the build on FreeBSD

Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
Reviewed-by: Jan Friesse <jfriesse@redhat.com>
Ruben Kerkhof 10 лет назад
Родитель
Сommit
479ec4dbf0
2 измененных файлов с 8 добавлено и 4 удалено
  1. 4 4
      configure.ac
  2. 4 0
      exec/votequorum.c

+ 4 - 4
configure.ac

@@ -179,10 +179,10 @@ AC_FUNC_REALLOC
 AC_FUNC_SELECT_ARGTYPES
 AC_FUNC_VPRINTF
 
-AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fcntl \
-		getcwd getpeerucred getpeereid gettimeofday inet_ntoa memmove \
-		memset mkdir scandir select socket strcasecmp strchr strdup \
-		strerror strrchr strspn strstr pthread_setschedparam \
+AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fdatasync \
+		fcntl getcwd getpeerucred getpeereid gettimeofday inet_ntoa \
+		memmove memset mkdir scandir select socket strcasecmp strchr \
+		strdup strerror strrchr strspn strstr pthread_setschedparam \
 		sched_get_priority_max sched_setscheduler getifaddrs \
 		clock_gettime ftruncate gethostname localtime_r munmap strtol])
 

+ 4 - 0
exec/votequorum.c

@@ -893,7 +893,11 @@ static void update_ev_tracking_barrier(uint32_t ev_t_barrier)
 		log_printf(LOGSYS_LEVEL_WARNING,
 			   "Unable to update ev_tracking_barrier on disk data!!!");
 	}
+#ifdef HAVE_FDATASYNC
 	fdatasync(ev_tracking_fd);
+#else
+	fsync(ev_tracking_fd);
+#endif
 
 	LEAVE();
 }