1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-19 23:22:23 +03: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:
Thomas Munro
2022-08-05 16:10:05 +12:00
parent 623cc67347
commit d2e150831a
12 changed files with 15 additions and 48 deletions

53
src/port/win32fdatasync.c Normal file
View File

@@ -0,0 +1,53 @@
/*-------------------------------------------------------------------------
*
* win32fdatasync.c
* Win32 fdatasync() replacement
*
*
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
*
* src/port/win32fdatasync.c
*
*-------------------------------------------------------------------------
*/
#define UMDF_USING_NTSTATUS
#ifdef FRONTEND
#include "postgres_fe.h"
#else
#include "postgres.h"
#endif
#include "port/win32ntdll.h"
int
fdatasync(int fd)
{
IO_STATUS_BLOCK iosb;
NTSTATUS status;
HANDLE handle;
handle = (HANDLE) _get_osfhandle(fd);
if (handle == INVALID_HANDLE_VALUE)
{
errno = EBADF;
return -1;
}
if (initialize_ntdll() < 0)
return -1;
memset(&iosb, 0, sizeof(iosb));
status = pg_NtFlushBuffersFileEx(handle,
FLUSH_FLAGS_FILE_DATA_SYNC_ONLY,
NULL,
0,
&iosb);
if (NT_SUCCESS(status))
return 0;
_dosmaperr(pg_RtlNtStatusToDosError(status));
return -1;
}