mirror of
https://github.com/postgres/postgres.git
synced 2025-05-14 00:03:46 -04:00
Remove configure probe for fdatasync.
fdatasync() is in SUSv2, and all targeted Unix systems have it. We have a replacement function for Windows. We retain the probe for the function declaration, which allows us to supply the mysteriously missing declaration for macOS, and also for Windows. No need to keep a HAVE_FDATASYNC macro around. Also rename src/port/fdatasync.c to win32fdatasync.c since it's only for Windows. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/CA+hUKGJ3LHeP9w5Fgzdr4G8AnEtJ=z=p6hGDEm4qYGEUX5B6fQ@mail.gmail.com Discussion: https://postgr.es/m/CA%2BhUKGJZJVO%3DiX%2Beb-PXi2_XS9ZRqnn_4URh0NUQOwt6-_51xQ%40mail.gmail.com
This commit is contained in:
parent
623cc67347
commit
d2e150831a
14
configure
vendored
14
configure
vendored
@ -16039,7 +16039,7 @@ fi
|
|||||||
LIBS_including_readline="$LIBS"
|
LIBS_including_readline="$LIBS"
|
||||||
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
||||||
|
|
||||||
for ac_func in backtrace_symbols copyfile fdatasync getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s posix_fallocate ppoll pthread_is_threaded_np setproctitle setproctitle_fast strchrnul strsignal syncfs sync_file_range uselocale wcstombs_l
|
for ac_func in backtrace_symbols copyfile getifaddrs getpeerucred inet_pton kqueue mbstowcs_l memset_s posix_fallocate ppoll pthread_is_threaded_np setproctitle setproctitle_fast strchrnul strsignal syncfs sync_file_range uselocale wcstombs_l
|
||||||
do :
|
do :
|
||||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||||
@ -16929,12 +16929,6 @@ fi
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case " $LIBOBJS " in
|
|
||||||
*" fdatasync.$ac_objext "* ) ;;
|
|
||||||
*) LIBOBJS="$LIBOBJS fdatasync.$ac_objext"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case " $LIBOBJS " in
|
case " $LIBOBJS " in
|
||||||
*" getrusage.$ac_objext "* ) ;;
|
*" getrusage.$ac_objext "* ) ;;
|
||||||
*) LIBOBJS="$LIBOBJS getrusage.$ac_objext"
|
*) LIBOBJS="$LIBOBJS getrusage.$ac_objext"
|
||||||
@ -16977,6 +16971,12 @@ esac
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
case " $LIBOBJS " in
|
||||||
|
*" win32fdatasync.$ac_objext "* ) ;;
|
||||||
|
*) LIBOBJS="$LIBOBJS win32fdatasync.$ac_objext"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
case " $LIBOBJS " in
|
case " $LIBOBJS " in
|
||||||
*" win32link.$ac_objext "* ) ;;
|
*" win32link.$ac_objext "* ) ;;
|
||||||
*) LIBOBJS="$LIBOBJS win32link.$ac_objext"
|
*) LIBOBJS="$LIBOBJS win32link.$ac_objext"
|
||||||
|
@ -1792,7 +1792,6 @@ LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
|||||||
AC_CHECK_FUNCS(m4_normalize([
|
AC_CHECK_FUNCS(m4_normalize([
|
||||||
backtrace_symbols
|
backtrace_symbols
|
||||||
copyfile
|
copyfile
|
||||||
fdatasync
|
|
||||||
getifaddrs
|
getifaddrs
|
||||||
getpeerucred
|
getpeerucred
|
||||||
inet_pton
|
inet_pton
|
||||||
@ -1928,7 +1927,6 @@ if test "$PORTNAME" = "win32"; then
|
|||||||
AC_CHECK_FUNCS(_configthreadlocale)
|
AC_CHECK_FUNCS(_configthreadlocale)
|
||||||
AC_REPLACE_FUNCS(gettimeofday)
|
AC_REPLACE_FUNCS(gettimeofday)
|
||||||
AC_LIBOBJ(dirmod)
|
AC_LIBOBJ(dirmod)
|
||||||
AC_LIBOBJ(fdatasync)
|
|
||||||
AC_LIBOBJ(getrusage)
|
AC_LIBOBJ(getrusage)
|
||||||
AC_LIBOBJ(kill)
|
AC_LIBOBJ(kill)
|
||||||
AC_LIBOBJ(open)
|
AC_LIBOBJ(open)
|
||||||
@ -1936,6 +1934,7 @@ if test "$PORTNAME" = "win32"; then
|
|||||||
AC_LIBOBJ(win32dlopen)
|
AC_LIBOBJ(win32dlopen)
|
||||||
AC_LIBOBJ(win32env)
|
AC_LIBOBJ(win32env)
|
||||||
AC_LIBOBJ(win32error)
|
AC_LIBOBJ(win32error)
|
||||||
|
AC_LIBOBJ(win32fdatasync)
|
||||||
AC_LIBOBJ(win32link)
|
AC_LIBOBJ(win32link)
|
||||||
AC_LIBOBJ(win32ntdll)
|
AC_LIBOBJ(win32ntdll)
|
||||||
AC_LIBOBJ(win32pread)
|
AC_LIBOBJ(win32pread)
|
||||||
|
@ -168,9 +168,7 @@ const struct config_enum_entry sync_method_options[] = {
|
|||||||
#ifdef HAVE_FSYNC_WRITETHROUGH
|
#ifdef HAVE_FSYNC_WRITETHROUGH
|
||||||
{"fsync_writethrough", SYNC_METHOD_FSYNC_WRITETHROUGH, false},
|
{"fsync_writethrough", SYNC_METHOD_FSYNC_WRITETHROUGH, false},
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FDATASYNC
|
|
||||||
{"fdatasync", SYNC_METHOD_FDATASYNC, false},
|
{"fdatasync", SYNC_METHOD_FDATASYNC, false},
|
||||||
#endif
|
|
||||||
#ifdef O_SYNC
|
#ifdef O_SYNC
|
||||||
{"open_sync", SYNC_METHOD_OPEN, false},
|
{"open_sync", SYNC_METHOD_OPEN, false},
|
||||||
#endif
|
#endif
|
||||||
@ -8015,12 +8013,10 @@ issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli)
|
|||||||
msg = _("could not fsync write-through file \"%s\": %m");
|
msg = _("could not fsync write-through file \"%s\": %m");
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_FDATASYNC
|
|
||||||
case SYNC_METHOD_FDATASYNC:
|
case SYNC_METHOD_FDATASYNC:
|
||||||
if (pg_fdatasync(fd) != 0)
|
if (pg_fdatasync(fd) != 0)
|
||||||
msg = _("could not fdatasync file \"%s\": %m");
|
msg = _("could not fdatasync file \"%s\": %m");
|
||||||
break;
|
break;
|
||||||
#endif
|
|
||||||
case SYNC_METHOD_OPEN:
|
case SYNC_METHOD_OPEN:
|
||||||
case SYNC_METHOD_OPEN_DSYNC:
|
case SYNC_METHOD_OPEN_DSYNC:
|
||||||
/* not reachable */
|
/* not reachable */
|
||||||
|
@ -442,20 +442,12 @@ pg_fsync_writethrough(int fd)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* pg_fdatasync --- same as fdatasync except does nothing if enableFsync is off
|
* pg_fdatasync --- same as fdatasync except does nothing if enableFsync is off
|
||||||
*
|
|
||||||
* Not all platforms have fdatasync; treat as fsync if not available.
|
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
pg_fdatasync(int fd)
|
pg_fdatasync(int fd)
|
||||||
{
|
{
|
||||||
if (enableFsync)
|
if (enableFsync)
|
||||||
{
|
|
||||||
#ifdef HAVE_FDATASYNC
|
|
||||||
return fdatasync(fd);
|
return fdatasync(fd);
|
||||||
#else
|
|
||||||
return fsync(fd);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -331,7 +331,6 @@ test_sync(int writes_per_op)
|
|||||||
printf(LABEL_FORMAT, "fdatasync");
|
printf(LABEL_FORMAT, "fdatasync");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
|
||||||
#ifdef HAVE_FDATASYNC
|
|
||||||
if ((tmpfile = open(filename, O_RDWR | PG_BINARY, 0)) == -1)
|
if ((tmpfile = open(filename, O_RDWR | PG_BINARY, 0)) == -1)
|
||||||
die("could not open output file");
|
die("could not open output file");
|
||||||
START_TIMER;
|
START_TIMER;
|
||||||
@ -347,9 +346,6 @@ test_sync(int writes_per_op)
|
|||||||
}
|
}
|
||||||
STOP_TIMER;
|
STOP_TIMER;
|
||||||
close(tmpfile);
|
close(tmpfile);
|
||||||
#else
|
|
||||||
printf(NA_FORMAT, _("n/a"));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Test fsync
|
* Test fsync
|
||||||
|
@ -67,8 +67,7 @@ typedef uint16 RepOriginId;
|
|||||||
/*
|
/*
|
||||||
* This chunk of hackery attempts to determine which file sync methods
|
* This chunk of hackery attempts to determine which file sync methods
|
||||||
* are available on the current platform, and to choose an appropriate
|
* are available on the current platform, and to choose an appropriate
|
||||||
* default method. We assume that fsync() is always available, and that
|
* default method.
|
||||||
* configure determined whether fdatasync() is.
|
|
||||||
*
|
*
|
||||||
* Note that we define our own O_DSYNC on Windows, but not O_SYNC.
|
* Note that we define our own O_DSYNC on Windows, but not O_SYNC.
|
||||||
*/
|
*/
|
||||||
@ -76,10 +75,8 @@ typedef uint16 RepOriginId;
|
|||||||
#define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD
|
#define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD
|
||||||
#elif defined(O_DSYNC) && (!defined(O_SYNC) || O_DSYNC != O_SYNC)
|
#elif defined(O_DSYNC) && (!defined(O_SYNC) || O_DSYNC != O_SYNC)
|
||||||
#define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC
|
#define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC
|
||||||
#elif defined(HAVE_FDATASYNC)
|
|
||||||
#define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
|
||||||
#else
|
#else
|
||||||
#define DEFAULT_SYNC_METHOD SYNC_METHOD_FSYNC
|
#define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* XLOG_DEFS_H */
|
#endif /* XLOG_DEFS_H */
|
||||||
|
@ -170,9 +170,6 @@
|
|||||||
/* Define to 1 if you have the `explicit_bzero' function. */
|
/* Define to 1 if you have the `explicit_bzero' function. */
|
||||||
#undef HAVE_EXPLICIT_BZERO
|
#undef HAVE_EXPLICIT_BZERO
|
||||||
|
|
||||||
/* Define to 1 if you have the `fdatasync' function. */
|
|
||||||
#undef HAVE_FDATASYNC
|
|
||||||
|
|
||||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||||
#undef HAVE_FSEEKO
|
#undef HAVE_FSEEKO
|
||||||
|
|
||||||
|
@ -5,6 +5,4 @@
|
|||||||
* would prefer open_datasync on FreeBSD 13+, but that is not a good choice on
|
* would prefer open_datasync on FreeBSD 13+, but that is not a good choice on
|
||||||
* many systems.
|
* many systems.
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_FDATASYNC
|
|
||||||
#define PLATFORM_DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
#define PLATFORM_DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
|
||||||
#endif
|
|
||||||
|
@ -83,14 +83,6 @@
|
|||||||
#define HAVE_FSYNC_WRITETHROUGH
|
#define HAVE_FSYNC_WRITETHROUGH
|
||||||
#define FSYNC_WRITETHROUGH_IS_FSYNC
|
#define FSYNC_WRITETHROUGH_IS_FSYNC
|
||||||
|
|
||||||
/*
|
|
||||||
* We have a replacement for fdatasync() in src/port/fdatasync.c, which is
|
|
||||||
* unconditionally used by MSVC and Mingw builds.
|
|
||||||
*/
|
|
||||||
#ifndef HAVE_FDATASYNC
|
|
||||||
#define HAVE_FDATASYNC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define USES_WINSOCK
|
#define USES_WINSOCK
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* fdatasync.c
|
* win32fdatasync.c
|
||||||
* Win32 fdatasync() replacement
|
* Win32 fdatasync() replacement
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* src/port/fdatasync.c
|
* src/port/win32fdatasync.c
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
@ -99,7 +99,7 @@ sub mkvcbuild
|
|||||||
$solution = CreateSolution($vsVersion, $config);
|
$solution = CreateSolution($vsVersion, $config);
|
||||||
|
|
||||||
our @pgportfiles = qw(
|
our @pgportfiles = qw(
|
||||||
chklocale.c explicit_bzero.c fdatasync.c
|
chklocale.c explicit_bzero.c
|
||||||
getpeereid.c getrusage.c inet_aton.c
|
getpeereid.c getrusage.c inet_aton.c
|
||||||
getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c
|
getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c
|
||||||
snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c
|
snprintf.c strlcat.c strlcpy.c dirmod.c noblock.c path.c
|
||||||
@ -110,6 +110,7 @@ sub mkvcbuild
|
|||||||
strerror.c tar.c
|
strerror.c tar.c
|
||||||
win32dlopen.c
|
win32dlopen.c
|
||||||
win32env.c win32error.c
|
win32env.c win32error.c
|
||||||
|
win32fdatasync.c
|
||||||
win32link.c
|
win32link.c
|
||||||
win32pread.c
|
win32pread.c
|
||||||
win32pwrite.c
|
win32pwrite.c
|
||||||
|
@ -252,7 +252,6 @@ sub GenerateFiles
|
|||||||
HAVE_EDITLINE_READLINE_H => undef,
|
HAVE_EDITLINE_READLINE_H => undef,
|
||||||
HAVE_EXECINFO_H => undef,
|
HAVE_EXECINFO_H => undef,
|
||||||
HAVE_EXPLICIT_BZERO => undef,
|
HAVE_EXPLICIT_BZERO => undef,
|
||||||
HAVE_FDATASYNC => 1,
|
|
||||||
HAVE_FSEEKO => 1,
|
HAVE_FSEEKO => 1,
|
||||||
HAVE_FUNCNAME__FUNC => undef,
|
HAVE_FUNCNAME__FUNC => undef,
|
||||||
HAVE_FUNCNAME__FUNCTION => 1,
|
HAVE_FUNCNAME__FUNCTION => 1,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user