Fix some problems with patch to fsync the data directory.
authorRobert Haas
Tue, 5 May 2015 12:30:28 +0000 (08:30 -0400)
committerRobert Haas
Tue, 5 May 2015 13:16:39 +0000 (09:16 -0400)
pg_win32_is_junction() was a typo for pgwin32_is_junction().  open()
was used not only in a two-argument form, which breaks on Windows,
but also where BasicOpenFile() should have been used.

Per reports from Andrew Dunstan and David Rowley.

src/backend/storage/file/fd.c

index f34e618ac5a8cb94d3d094e5d96781555bd12173..295eeb040ae2d69ce88df065bc4fd4bbfbd17d36 100644 (file)
@@ -2449,7 +2449,7 @@ pre_sync_fname(char *fname, bool isdir)
 {
    int         fd;
 
-   fd = open(fname, O_RDONLY | PG_BINARY);
+   fd = BasicOpenFile(fname, O_RDONLY | PG_BINARY, 0);
 
    /*
     * Some OSs don't allow us to open directories at all (Windows returns
@@ -2508,7 +2508,7 @@ walkdir(char *path, void (*action) (char *fname, bool isdir))
 #ifndef WIN32
        else if (S_ISLNK(fst.st_mode))
 #else
-       else if (pg_win32_is_junction(subpath))
+       else if (pgwin32_is_junction(subpath))
 #endif
        {
 #if defined(HAVE_READLINK) || defined(WIN32)