]> granicus.if.org Git - postgresql/commitdiff
fsync backup_label after pg_start_backup()
authorSimon Riggs <simon@2ndQuadrant.com>
Tue, 7 Aug 2012 15:21:49 +0000 (16:21 +0100)
committerSimon Riggs <simon@2ndQuadrant.com>
Tue, 7 Aug 2012 15:21:49 +0000 (16:21 +0100)
Dave Kerr, backpatched by Simon Riggs

src/backend/access/transam/xlog.c

index 1612f44e4eccd624f978223b7b06d1000b715db9..adf5bc93de542579f180e21086d16696c612ed28 100644 (file)
@@ -9093,7 +9093,8 @@ do_pg_start_backup(const char *backupidstr, bool fast, char **labelfile)
                                                 errmsg("could not create file \"%s\": %m",
                                                                BACKUP_LABEL_FILE)));
                        fwrite(labelfbuf.data, labelfbuf.len, 1, fp);
-                       if (fflush(fp) || ferror(fp) || FreeFile(fp))
+
+                       if (fflush(fp) || ferror(fp) || pg_fsync(fileno(fp)) != 0 || FreeFile(fp))
                                ereport(ERROR,
                                                (errcode_for_file_access(),
                                                 errmsg("could not write file \"%s\": %m",