diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-11-10 03:53:45 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 2000-11-10 03:53:45 +0000 |
commit | 92875e6f4468b4141775518db96e8f7d88ea1e72 (patch) | |
tree | 5e143c1a628b9d0927e2e883a62939629a6826b2 /src | |
parent | ddeab225653680c0067d86b3eb4b969126bd68ee (diff) | |
download | postgresql-92875e6f4468b4141775518db96e8f7d88ea1e72.tar.gz postgresql-92875e6f4468b4141775518db96e8f7d88ea1e72.zip |
pg_fsync is fsync in WAL version.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/storage/buffer/xlog_bufmgr.c | 5 | ||||
-rw-r--r-- | src/backend/storage/file/fd.c | 13 | ||||
-rw-r--r-- | src/backend/storage/smgr/md.c | 4 | ||||
-rw-r--r-- | src/include/storage/fd.h | 7 |
4 files changed, 25 insertions, 4 deletions
diff --git a/src/backend/storage/buffer/xlog_bufmgr.c b/src/backend/storage/buffer/xlog_bufmgr.c index 15c4321405e..b00edd1be86 100644 --- a/src/backend/storage/buffer/xlog_bufmgr.c +++ b/src/backend/storage/buffer/xlog_bufmgr.c @@ -8,7 +8,7 @@ * * * 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 BufmgrCommit(void) { LocalBufferSync(); + /* + * All files created in current transaction will be fsync-ed + */ smgrcommit(); } diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index 84c4e76c09d..76d2fcfd223 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * 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: * @@ -192,6 +192,7 @@ static File fileNameOpenFile(FileName fileName, int fileFlags, int fileMode); static char *filepath(char *filename); static long pg_nofile(void); +#ifndef XLOG /* * pg_fsync --- same as fsync except does nothing if -F switch was given */ @@ -203,6 +204,7 @@ pg_fsync(int fd) else return 0; } +#endif /* * BasicOpenFile --- same as open(2) except can free other FDs if needed @@ -663,7 +665,16 @@ fileNameOpenFile(FileName fileName, vfdP->fileFlags = fileFlags & ~(O_TRUNC | O_EXCL); vfdP->fileMode = fileMode; 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; +#endif return file; } diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index c97a46ba4b4..8215fd5acc8 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -8,7 +8,7 @@ * * * 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, elog(DEBUG, "mdblindwrt: write() failed: %m"); status = SM_FAIL; } +#ifndef XLOG else if (dofsync && pg_fsync(fd) < 0) { elog(DEBUG, "mdblindwrt: fsync() failed: %m"); status = SM_FAIL; } +#endif if (close(fd) < 0) { diff --git a/src/include/storage/fd.h b/src/include/storage/fd.h index 5456f18372a..45ef1aedcd5 100644 --- a/src/include/storage/fd.h +++ b/src/include/storage/fd.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * 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); /* Miscellaneous support routines */ extern void closeAllVfds(void); extern void AtEOXact_Files(void); + +#ifdef XLOG +#define pg_fsync(fd) fsync(fd) +#else extern int pg_fsync(int fd); +#endif #endif /* FD_H */ |