|
6 | 6 | * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
7 | 7 | * Portions Copyright (c) 1994, Regents of the University of California
|
8 | 8 | *
|
9 |
| - * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.13 2000/04/12 17:14:53 momjian Exp $ |
| 9 | + * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.14 2000/06/02 03:58:34 tgl Exp $ |
10 | 10 | *
|
11 | 11 | *-------------------------------------------------------------------------
|
12 | 12 | */
|
@@ -44,8 +44,6 @@ bool StopIfError = false;
|
44 | 44 | SPINLOCK ControlFileLockId;
|
45 | 45 | SPINLOCK XidGenLockId;
|
46 | 46 |
|
47 |
| -extern bool ReleaseDataFile(void); |
48 |
| - |
49 | 47 | extern VariableCache ShmemVariableCache;
|
50 | 48 |
|
51 | 49 | #define MinXLOGbuffers 4
|
@@ -738,22 +736,13 @@ XLogFileInit(uint32 log, uint32 seg)
|
738 | 736 | XLogFileName(path, log, seg);
|
739 | 737 | unlink(path);
|
740 | 738 |
|
741 |
| -tryAgain: |
742 | 739 | #ifndef __CYGWIN__
|
743 |
| - fd = open(path, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); |
| 740 | + fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); |
744 | 741 | #else
|
745 |
| - fd = open(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); |
| 742 | + fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); |
746 | 743 | #endif
|
747 |
| - if (fd < 0 && (errno == EMFILE || errno == ENFILE)) |
748 |
| - { |
749 |
| - fd = errno; |
750 |
| - if (!ReleaseDataFile()) |
751 |
| - elog(STOP, "Create(logfile %u seg %u) failed: %d (and no one data file can be closed)", |
752 |
| - logId, logSeg, fd); |
753 |
| - goto tryAgain; |
754 |
| - } |
755 | 744 | if (fd < 0)
|
756 |
| - elog(STOP, "Init(logfile %u seg %u) failed: %d", |
| 745 | + elog(STOP, "Open(logfile %u seg %u) failed: %d", |
757 | 746 | logId, logSeg, errno);
|
758 | 747 |
|
759 | 748 | if (lseek(fd, XLogSegSize - 1, SEEK_SET) != (off_t) (XLogSegSize - 1))
|
@@ -783,20 +772,11 @@ XLogFileOpen(uint32 log, uint32 seg, bool econt)
|
783 | 772 |
|
784 | 773 | XLogFileName(path, log, seg);
|
785 | 774 |
|
786 |
| -tryAgain: |
787 | 775 | #ifndef __CYGWIN__
|
788 |
| - fd = open(path, O_RDWR); |
| 776 | + fd = BasicOpenFile(path, O_RDWR, S_IRUSR | S_IWUSR); |
789 | 777 | #else
|
790 |
| - fd = open(path, O_RDWR | O_BINARY); |
| 778 | + fd = BasicOpenFile(path, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR); |
791 | 779 | #endif
|
792 |
| - if (fd < 0 && (errno == EMFILE || errno == ENFILE)) |
793 |
| - { |
794 |
| - fd = errno; |
795 |
| - if (!ReleaseDataFile()) |
796 |
| - elog(STOP, "Open(logfile %u seg %u) failed: %d (and no one data file can be closed)", |
797 |
| - logId, logSeg, fd); |
798 |
| - goto tryAgain; |
799 |
| - } |
800 | 780 | if (fd < 0)
|
801 | 781 | {
|
802 | 782 | if (econt && errno == ENOENT)
|
@@ -1102,20 +1082,11 @@ UpdateControlFile()
|
1102 | 1082 | {
|
1103 | 1083 | int fd;
|
1104 | 1084 |
|
1105 |
| -tryAgain: |
1106 | 1085 | #ifndef __CYGWIN__
|
1107 |
| - fd = open(ControlFilePath, O_RDWR); |
| 1086 | + fd = BasicOpenFile(ControlFilePath, O_RDWR, S_IRUSR | S_IWUSR); |
1108 | 1087 | #else
|
1109 |
| - fd = open(ControlFilePath, O_RDWR | O_BINARY); |
| 1088 | + fd = BasicOpenFile(ControlFilePath, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR); |
1110 | 1089 | #endif
|
1111 |
| - if (fd < 0 && (errno == EMFILE || errno == ENFILE)) |
1112 |
| - { |
1113 |
| - fd = errno; |
1114 |
| - if (!ReleaseDataFile()) |
1115 |
| - elog(STOP, "Open(cntlfile) failed: %d (and no one data file can be closed)", |
1116 |
| - fd); |
1117 |
| - goto tryAgain; |
1118 |
| - } |
1119 | 1090 | if (fd < 0)
|
1120 | 1091 | elog(STOP, "Open(cntlfile) failed: %d", errno);
|
1121 | 1092 |
|
@@ -1174,9 +1145,9 @@ BootStrapXLOG()
|
1174 | 1145 | #endif
|
1175 | 1146 |
|
1176 | 1147 | #ifndef __CYGWIN__
|
1177 |
| - fd = open(ControlFilePath, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); |
| 1148 | + fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR); |
1178 | 1149 | #else
|
1179 |
| - fd = open(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); |
| 1150 | + fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR); |
1180 | 1151 | #endif
|
1181 | 1152 | if (fd < 0)
|
1182 | 1153 | elog(STOP, "BootStrapXLOG failed to create control file (%s): %d",
|
@@ -1288,20 +1259,11 @@ StartupXLOG()
|
1288 | 1259 | /*
|
1289 | 1260 | * Open/read Control file
|
1290 | 1261 | */
|
1291 |
| -tryAgain: |
1292 | 1262 | #ifndef __CYGWIN__
|
1293 |
| - fd = open(ControlFilePath, O_RDWR); |
| 1263 | + fd = BasicOpenFile(ControlFilePath, O_RDWR, S_IRUSR | S_IWUSR); |
1294 | 1264 | #else
|
1295 |
| - fd = open(ControlFilePath, O_RDWR | O_BINARY); |
| 1265 | + fd = BasicOpenFile(ControlFilePath, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR); |
1296 | 1266 | #endif
|
1297 |
| - if (fd < 0 && (errno == EMFILE || errno == ENFILE)) |
1298 |
| - { |
1299 |
| - fd = errno; |
1300 |
| - if (!ReleaseDataFile()) |
1301 |
| - elog(STOP, "Open(\"%s\") failed: %d (and no one data file can be closed)", |
1302 |
| - ControlFilePath, fd); |
1303 |
| - goto tryAgain; |
1304 |
| - } |
1305 | 1267 | if (fd < 0)
|
1306 | 1268 | elog(STOP, "Open(\"%s\") failed: %d", ControlFilePath, errno);
|
1307 | 1269 |
|
|
0 commit comments