Commit fb47385f authored by Tom Lane's avatar Tom Lane

Resurrect -F switch: it controls fsyncs again, though the fsyncs are

mostly just on the WAL logfile nowadays.  But if people want to disable
fsync for performance, why should we say no?
parent 57c499a4
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.39 2000/12/03 10:27:26 vadim Exp $ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.40 2000/12/08 22:21:33 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -621,7 +621,7 @@ XLogFlush(XLogRecPtr record) ...@@ -621,7 +621,7 @@ XLogFlush(XLogRecPtr record)
logFile = XLogFileOpen(logId, logSeg, false); logFile = XLogFileOpen(logId, logSeg, false);
} }
if (fsync(logFile) != 0) if (pg_fsync(logFile) != 0)
elog(STOP, "fsync(logfile %u seg %u) failed: %m", elog(STOP, "fsync(logfile %u seg %u) failed: %m",
logId, logSeg); logId, logSeg);
LgwrResult.Flush = LgwrResult.Write; LgwrResult.Flush = LgwrResult.Write;
...@@ -717,7 +717,7 @@ XLogWrite(char *buffer) ...@@ -717,7 +717,7 @@ XLogWrite(char *buffer)
{ {
if (wcnt > 0) if (wcnt > 0)
{ {
if (fsync(logFile) != 0) if (pg_fsync(logFile) != 0)
elog(STOP, "fsync(logfile %u seg %u) failed: %m", elog(STOP, "fsync(logfile %u seg %u) failed: %m",
logId, logSeg); logId, logSeg);
if (LgwrResult.Write.xlogid != logId) if (LgwrResult.Write.xlogid != logId)
...@@ -799,7 +799,7 @@ XLogWrite(char *buffer) ...@@ -799,7 +799,7 @@ XLogWrite(char *buffer)
if (XLByteLT(LgwrResult.Flush, LgwrRqst.Flush) && if (XLByteLT(LgwrResult.Flush, LgwrRqst.Flush) &&
XLByteLE(LgwrRqst.Flush, LgwrResult.Write)) XLByteLE(LgwrRqst.Flush, LgwrResult.Write))
{ {
if (fsync(logFile) != 0) if (pg_fsync(logFile) != 0)
elog(STOP, "fsync(logfile %u seg %u) failed: %m", elog(STOP, "fsync(logfile %u seg %u) failed: %m",
logId, logSeg); logId, logSeg);
LgwrResult.Flush = LgwrResult.Write; LgwrResult.Flush = LgwrResult.Write;
...@@ -864,7 +864,7 @@ XLogFileInit(uint32 log, uint32 seg, bool *usexistent) ...@@ -864,7 +864,7 @@ XLogFileInit(uint32 log, uint32 seg, bool *usexistent)
elog(STOP, "write(logfile %u seg %u) failed: %m", elog(STOP, "write(logfile %u seg %u) failed: %m",
logId, logSeg); logId, logSeg);
if (fsync(fd) != 0) if (pg_fsync(fd) != 0)
elog(STOP, "fsync(logfile %u seg %u) failed: %m", elog(STOP, "fsync(logfile %u seg %u) failed: %m",
logId, logSeg); logId, logSeg);
...@@ -1213,7 +1213,7 @@ next_record_is_invalid:; ...@@ -1213,7 +1213,7 @@ next_record_is_invalid:;
} }
if (readFile >= 0) if (readFile >= 0)
{ {
if (fsync(readFile) < 0) if (pg_fsync(readFile) < 0)
elog(STOP, "ReadRecord: fsync(logfile %u seg %u) failed: %m", elog(STOP, "ReadRecord: fsync(logfile %u seg %u) failed: %m",
readId, readSeg); readId, readSeg);
close(readFile); close(readFile);
...@@ -1330,7 +1330,7 @@ WriteControlFile(void) ...@@ -1330,7 +1330,7 @@ WriteControlFile(void)
if (write(fd, buffer, BLCKSZ) != BLCKSZ) if (write(fd, buffer, BLCKSZ) != BLCKSZ)
elog(STOP, "WriteControlFile failed to write control file: %m"); elog(STOP, "WriteControlFile failed to write control file: %m");
if (fsync(fd) != 0) if (pg_fsync(fd) != 0)
elog(STOP, "WriteControlFile failed to fsync control file: %m"); elog(STOP, "WriteControlFile failed to fsync control file: %m");
close(fd); close(fd);
...@@ -1400,7 +1400,7 @@ UpdateControlFile(void) ...@@ -1400,7 +1400,7 @@ UpdateControlFile(void)
if (write(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData)) if (write(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
elog(STOP, "write(cntlfile) failed: %m"); elog(STOP, "write(cntlfile) failed: %m");
if (fsync(fd) != 0) if (pg_fsync(fd) != 0)
elog(STOP, "fsync(cntlfile) failed: %m"); elog(STOP, "fsync(cntlfile) failed: %m");
close(fd); close(fd);
...@@ -1489,7 +1489,7 @@ BootStrapXLOG() ...@@ -1489,7 +1489,7 @@ BootStrapXLOG()
if (write(logFile, buffer, BLCKSZ) != BLCKSZ) if (write(logFile, buffer, BLCKSZ) != BLCKSZ)
elog(STOP, "BootStrapXLOG failed to write logfile: %m"); elog(STOP, "BootStrapXLOG failed to write logfile: %m");
if (fsync(logFile) != 0) if (pg_fsync(logFile) != 0)
elog(STOP, "BootStrapXLOG failed to fsync logfile: %m"); elog(STOP, "BootStrapXLOG failed to fsync logfile: %m");
close(logFile); close(logFile);
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.68 2000/11/30 08:46:23 vadim Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.69 2000/12/08 22:21:32 tgl Exp $
* *
* NOTES: * NOTES:
* *
...@@ -192,6 +192,18 @@ static File fileNameOpenFile(FileName fileName, int fileFlags, int fileMode); ...@@ -192,6 +192,18 @@ static File fileNameOpenFile(FileName fileName, int fileFlags, int fileMode);
static char *filepath(char *filename); static char *filepath(char *filename);
static long pg_nofile(void); static long pg_nofile(void);
/*
* pg_fsync --- same as fsync except does nothing if -F switch was given
*/
int
pg_fsync(int fd)
{
if (enableFsync)
return fsync(fd);
else
return 0;
}
/* /*
* BasicOpenFile --- same as open(2) except can free other FDs if needed * BasicOpenFile --- same as open(2) except can free other FDs if needed
* *
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Id: fd.h,v 1.24 2000/11/30 08:46:26 vadim Exp $ * $Id: fd.h,v 1.25 2000/12/08 22:21:32 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -70,7 +70,6 @@ extern int BasicOpenFile(FileName fileName, int fileFlags, int fileMode); ...@@ -70,7 +70,6 @@ extern int BasicOpenFile(FileName fileName, int fileFlags, int fileMode);
/* Miscellaneous support routines */ /* Miscellaneous support routines */
extern void closeAllVfds(void); extern void closeAllVfds(void);
extern void AtEOXact_Files(void); extern void AtEOXact_Files(void);
extern int pg_fsync(int fd);
#define pg_fsync(fd) fsync(fd)
#endif /* FD_H */ #endif /* FD_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment