]> granicus.if.org Git - postgresql/commitdiff
pg_fsync is fsync in WAL version.
authorVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 10 Nov 2000 03:53:45 +0000 (03:53 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
Fri, 10 Nov 2000 03:53:45 +0000 (03:53 +0000)
src/backend/storage/buffer/xlog_bufmgr.c
src/backend/storage/file/fd.c
src/backend/storage/smgr/md.c
src/include/storage/fd.h

index 15c4321405e8a2812953e414be76eb0817d9768e..b00edd1be86e5c78a551ba553cb894485146b1cb 100644 (file)
@@ -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();
 }
 
index 84c4e76c09d626cb2b95cf3e8021bc9b15007c5e..76d2fcfd22356793b22a60bbbdafcdaf07d300d8 100644 (file)
@@ -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;
 }
index c97a46ba4b4eba3cb699162569799789bc30b902..8215fd5acc8d49868b948f6052cd40404d2702ab 100644 (file)
@@ -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)
        {
index 5456f18372af461f34d4e04dfbe9051467089d85..45ef1aedcd52e385817af055f8e4211c78738b55 100644 (file)
@@ -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 */