aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/storage/file/fd.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index c31a523857d..78c7d41ac48 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -128,9 +128,15 @@ int max_safe_fds = 32; /* default if not changed */
/* Debugging.... */
#ifdef FDDEBUG
-#define DO_DB(A) A
+#define DO_DB(A) \
+ do { \
+ int _do_db_save_errno = errno; \
+ A; \
+ errno = _do_db_save_errno; \
+ } while (0)
#else
-#define DO_DB(A) /* A */
+#define DO_DB(A) \
+ ((void) 0)
#endif
#define VFD_CLOSED (-1)
@@ -703,7 +709,7 @@ LruInsert(File file)
if (vfdP->fd < 0)
{
DO_DB(elog(LOG, "RE_OPEN FAILED: %d", errno));
- return vfdP->fd;
+ return -1;
}
else
{
@@ -754,7 +760,7 @@ AllocateVfd(void)
Index i;
File file;
- DO_DB(elog(LOG, "AllocateVfd. Size %lu", SizeVfdCache));
+ DO_DB(elog(LOG, "AllocateVfd. Size %lu", (unsigned long) SizeVfdCache));
Assert(SizeVfdCache > 0); /* InitFileAccess not called? */
@@ -911,8 +917,11 @@ PathNameOpenFile(FileName fileName, int fileFlags, int fileMode)
if (vfdP->fd < 0)
{
+ int save_errno = errno;
+
FreeVfd(file);
free(fnamecopy);
+ errno = save_errno;
return -1;
}
++nfile;
@@ -1554,7 +1563,6 @@ OpenTransientFile(FileName fileName, int fileFlags, int fileMode)
{
int fd;
-
DO_DB(elog(LOG, "OpenTransientFile: Allocated %d (%s)",
numAllocatedDescs, fileName));