aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>2000-11-10 03:53:45 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>2000-11-10 03:53:45 +0000
commit92875e6f4468b4141775518db96e8f7d88ea1e72 (patch)
tree5e143c1a628b9d0927e2e883a62939629a6826b2 /src
parentddeab225653680c0067d86b3eb4b969126bd68ee (diff)
downloadpostgresql-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.c5
-rw-r--r--src/backend/storage/file/fd.c13
-rw-r--r--src/backend/storage/smgr/md.c4
-rw-r--r--src/include/storage/fd.h7
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 */