aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/storage/file/fd.c53
1 files changed, 30 insertions, 23 deletions
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index d0a08d20a59..e5a7471931b 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.87 2001/11/05 17:46:27 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.88 2002/02/10 22:56:31 tgl Exp $
*
* NOTES:
*
@@ -110,7 +110,7 @@ int max_files_per_process = 1000;
#define FileIsNotOpen(file) (VfdCache[file].fd == VFD_CLOSED)
-#define FileUnknownPos (-1)
+#define FileUnknownPos (-1L)
typedef struct vfd
{
@@ -380,7 +380,6 @@ static void
LruDelete(File file)
{
Vfd *vfdP;
- int returnValue;
Assert(file != 0);
@@ -394,19 +393,21 @@ LruDelete(File file)
/* save the seek position */
vfdP->seekPos = (long) lseek(vfdP->fd, 0L, SEEK_CUR);
- Assert(vfdP->seekPos != -1);
+ Assert(vfdP->seekPos != -1L);
/* if we have written to the file, sync it before closing */
if (vfdP->fdstate & FD_DIRTY)
{
- returnValue = pg_fsync(vfdP->fd);
- Assert(returnValue != -1);
+ if (pg_fsync(vfdP->fd))
+ elog(DEBUG, "LruDelete: failed to fsync %s: %m",
+ vfdP->fileName);
vfdP->fdstate &= ~FD_DIRTY;
}
/* close the file */
- returnValue = close(vfdP->fd);
- Assert(returnValue != -1);
+ if (close(vfdP->fd))
+ elog(DEBUG, "LruDelete: failed to close %s: %m",
+ vfdP->fileName);
--nfile;
vfdP->fd = VFD_CLOSED;
@@ -437,7 +438,6 @@ static int
LruInsert(File file)
{
Vfd *vfdP;
- int returnValue;
Assert(file != 0);
@@ -475,8 +475,10 @@ LruInsert(File file)
/* seek to the right position */
if (vfdP->seekPos != 0L)
{
- returnValue = lseek(vfdP->fd, vfdP->seekPos, SEEK_SET);
- Assert(returnValue != -1);
+ long returnValue;
+
+ returnValue = (long) lseek(vfdP->fd, vfdP->seekPos, SEEK_SET);
+ Assert(returnValue != -1L);
}
}
@@ -824,43 +826,48 @@ OpenTemporaryFile(void)
void
FileClose(File file)
{
- int returnValue;
+ Vfd *vfdP;
Assert(FileIsValid(file));
DO_DB(elog(DEBUG, "FileClose: %d (%s)",
file, VfdCache[file].fileName));
+ vfdP = &VfdCache[file];
+
if (!FileIsNotOpen(file))
{
-
/* remove the file from the lru ring */
Delete(file);
/* if we did any writes, sync the file before closing */
- if (VfdCache[file].fdstate & FD_DIRTY)
+ if (vfdP->fdstate & FD_DIRTY)
{
- returnValue = pg_fsync(VfdCache[file].fd);
- Assert(returnValue != -1);
- VfdCache[file].fdstate &= ~FD_DIRTY;
+ if (pg_fsync(vfdP->fd))
+ elog(DEBUG, "FileClose: failed to fsync %s: %m",
+ vfdP->fileName);
+ vfdP->fdstate &= ~FD_DIRTY;
}
/* close the file */
- returnValue = close(VfdCache[file].fd);
- Assert(returnValue != -1);
+ if (close(vfdP->fd))
+ elog(DEBUG, "FileClose: failed to close %s: %m",
+ vfdP->fileName);
--nfile;
- VfdCache[file].fd = VFD_CLOSED;
+ vfdP->fd = VFD_CLOSED;
}
/*
* Delete the file if it was temporary
*/
- if (VfdCache[file].fdstate & FD_TEMPORARY)
+ if (vfdP->fdstate & FD_TEMPORARY)
{
/* reset flag so that die() interrupt won't cause problems */
- VfdCache[file].fdstate &= ~FD_TEMPORARY;
- unlink(VfdCache[file].fileName);
+ vfdP->fdstate &= ~FD_TEMPORARY;
+ if (unlink(vfdP->fileName))
+ elog(DEBUG, "FileClose: failed to unlink %s: %m",
+ vfdP->fileName);
}
/*