Commit 92875e6f authored by Vadim B. Mikheev's avatar Vadim B. Mikheev

pg_fsync is fsync in WAL version.

parent ddeab225
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/xlog_bufmgr.c,v 1.2 2000/11/08 22:09:59 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/buffer/Attic/xlog_bufmgr.c,v 1.3 2000/11/10 03:53:44 vadim Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -1065,6 +1065,9 @@ void ...@@ -1065,6 +1065,9 @@ void
BufmgrCommit(void) BufmgrCommit(void)
{ {
LocalBufferSync(); LocalBufferSync();
/*
* All files created in current transaction will be fsync-ed
*/
smgrcommit(); smgrcommit();
} }
......
...@@ -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.65 2000/10/28 16:20:56 vadim Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.66 2000/11/10 03:53:44 vadim Exp $
* *
* NOTES: * NOTES:
* *
...@@ -192,6 +192,7 @@ static File fileNameOpenFile(FileName fileName, int fileFlags, int fileMode); ...@@ -192,6 +192,7 @@ 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);
#ifndef XLOG
/* /*
* pg_fsync --- same as fsync except does nothing if -F switch was given * pg_fsync --- same as fsync except does nothing if -F switch was given
*/ */
...@@ -203,6 +204,7 @@ pg_fsync(int fd) ...@@ -203,6 +204,7 @@ pg_fsync(int fd)
else else
return 0; return 0;
} }
#endif
/* /*
* BasicOpenFile --- same as open(2) except can free other FDs if needed * BasicOpenFile --- same as open(2) except can free other FDs if needed
...@@ -663,7 +665,16 @@ fileNameOpenFile(FileName fileName, ...@@ -663,7 +665,16 @@ fileNameOpenFile(FileName fileName,
vfdP->fileFlags = fileFlags & ~(O_TRUNC | O_EXCL); vfdP->fileFlags = fileFlags & ~(O_TRUNC | O_EXCL);
vfdP->fileMode = fileMode; vfdP->fileMode = fileMode;
vfdP->seekPos = 0; vfdP->seekPos = 0;
#ifdef XLOG
/*
* Have to fsync file on commit. Alternative way - log
* file creation and fsync log before actual file creation.
*/
if (fileFlags & O_CREAT)
vfdP->fdstate = FD_DIRTY;
#else
vfdP->fdstate = 0x0; vfdP->fdstate = 0x0;
#endif
return file; return file;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.78 2000/11/08 22:10:00 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.79 2000/11/10 03:53:45 vadim Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -569,12 +569,14 @@ mdblindwrt(RelFileNode rnode, ...@@ -569,12 +569,14 @@ mdblindwrt(RelFileNode rnode,
elog(DEBUG, "mdblindwrt: write() failed: %m"); elog(DEBUG, "mdblindwrt: write() failed: %m");
status = SM_FAIL; status = SM_FAIL;
} }
#ifndef XLOG
else if (dofsync && else if (dofsync &&
pg_fsync(fd) < 0) pg_fsync(fd) < 0)
{ {
elog(DEBUG, "mdblindwrt: fsync() failed: %m"); elog(DEBUG, "mdblindwrt: fsync() failed: %m");
status = SM_FAIL; status = SM_FAIL;
} }
#endif
if (close(fd) < 0) if (close(fd) < 0)
{ {
......
...@@ -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.22 2000/06/02 03:58:31 tgl Exp $ * $Id: fd.h,v 1.23 2000/11/10 03:53:45 vadim Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -70,6 +70,11 @@ extern int BasicOpenFile(FileName fileName, int fileFlags, int fileMode); ...@@ -70,6 +70,11 @@ 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);
#ifdef XLOG
#define pg_fsync(fd) fsync(fd)
#else
extern int pg_fsync(int fd); extern int pg_fsync(int fd);
#endif
#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