summaryrefslogtreecommitdiff
path: root/src/backend/storage/file/fd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/file/fd.c')
-rw-r--r--src/backend/storage/file/fd.c93
1 files changed, 46 insertions, 47 deletions
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index 0cb04607562..eade2f1c642 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -6,7 +6,7 @@
* Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Id: fd.c,v 1.39 1999/05/09 00:52:07 tgl Exp $
+ * $Id: fd.c,v 1.40 1999/05/25 16:11:03 momjian Exp $
*
* NOTES:
*
@@ -103,11 +103,11 @@ typedef struct vfd
unsigned short fdstate; /* bitflags for VFD's state */
/* these are the assigned bits in fdstate: */
-#define FD_DIRTY (1 << 0) /* written to, but not yet fsync'd */
-#define FD_TEMPORARY (1 << 1) /* should be unlinked when closed */
+#define FD_DIRTY (1 << 0)/* written to, but not yet fsync'd */
+#define FD_TEMPORARY (1 << 1)/* should be unlinked when closed */
File nextFree; /* link to next free VFD, if in freelist */
- File lruMoreRecently; /* doubly linked recency-of-use list */
+ File lruMoreRecently;/* doubly linked recency-of-use list */
File lruLessRecently;
long seekPos; /* current logical file position */
char *fileName; /* name of file, or NULL for unused VFD */
@@ -118,7 +118,7 @@ typedef struct vfd
/*
* Virtual File Descriptor array pointer and size. This grows as
- * needed. 'File' values are indexes into this array.
+ * needed. 'File' values are indexes into this array.
* Note that VfdCache[0] is not a usable VFD, just a list header.
*/
static Vfd *VfdCache;
@@ -139,7 +139,7 @@ static int nfile = 0;
#define MAX_ALLOCATED_FILES 32
static int numAllocatedFiles = 0;
-static FILE * allocatedFiles[MAX_ALLOCATED_FILES];
+static FILE *allocatedFiles[MAX_ALLOCATED_FILES];
/*
* Number of temporary files opened during the current transaction;
@@ -348,7 +348,7 @@ LruInsert(File file)
if (FileIsNotOpen(file))
{
- while (nfile+numAllocatedFiles >= pg_nofile())
+ while (nfile + numAllocatedFiles >= pg_nofile())
ReleaseLruFile();
/*
@@ -434,12 +434,13 @@ AllocateVfd()
if (VfdCache[0].nextFree == 0)
{
+
/*
* The free list is empty so it is time to increase the size of
* the array. We choose to double it each time this happens.
* However, there's not much point in starting *real* small.
*/
- Size newCacheSize = SizeVfdCache * 2;
+ Size newCacheSize = SizeVfdCache * 2;
if (newCacheSize < 32)
newCacheSize = 32;
@@ -532,8 +533,9 @@ FileAccess(File file)
file, VfdCache[file].fileName));
/*
- * Is the file open? If not, open it and put it at the head of the LRU
- * ring (possibly closing the least recently used file to get an FD).
+ * Is the file open? If not, open it and put it at the head of the
+ * LRU ring (possibly closing the least recently used file to get an
+ * FD).
*/
if (FileIsNotOpen(file))
@@ -589,7 +591,7 @@ fileNameOpenFile(FileName fileName,
file = AllocateVfd();
vfdP = &VfdCache[file];
- while (nfile+numAllocatedFiles >= pg_nofile())
+ while (nfile + numAllocatedFiles >= pg_nofile())
ReleaseLruFile();
tryAgain:
@@ -659,10 +661,13 @@ PathNameOpenFile(FileName fileName, int fileFlags, int fileMode)
File
OpenTemporaryFile(void)
{
- char tempfilename[64];
- File file;
+ char tempfilename[64];
+ File file;
- /* Generate a tempfile name that's unique within the current transaction */
+ /*
+ * Generate a tempfile name that's unique within the current
+ * transaction
+ */
snprintf(tempfilename, sizeof(tempfilename),
"pg_temp%d.%ld", (int) getpid(), tempFileCounter++);
@@ -723,9 +728,7 @@ FileClose(File file)
* Delete the file if it was temporary
*/
if (VfdCache[file].fdstate & FD_TEMPORARY)
- {
unlink(VfdCache[file].fileName);
- }
/*
* Return the Vfd slot to the free list
@@ -817,9 +820,7 @@ FileSeek(File file, long offset, int whence)
}
}
else
- {
VfdCache[file].seekPos = lseek(VfdCache[file].fd, offset, whence);
- }
return VfdCache[file].seekPos;
}
@@ -893,7 +894,7 @@ FileNameUnlink(char *filename)
/*
* Routines that want to use stdio (ie, FILE*) should use AllocateFile
* rather than plain fopen(). This lets fd.c deal with freeing FDs if
- * necessary to open the file. When done, call FreeFile rather than fclose.
+ * necessary to open the file. When done, call FreeFile rather than fclose.
*
* Note that files that will be open for any significant length of time
* should NOT be handled this way, since they cannot share kernel file
@@ -929,21 +930,19 @@ TryAgain:
}
}
else
- {
allocatedFiles[numAllocatedFiles++] = file;
- }
return file;
}
void
FreeFile(FILE *file)
{
- int i;
+ int i;
DO_DB(elog(DEBUG, "FreeFile: Allocated %d.", numAllocatedFiles));
/* Remove file from list of allocated files, if it's present */
- for (i = numAllocatedFiles; --i >= 0; )
+ for (i = numAllocatedFiles; --i >= 0;)
{
if (allocatedFiles[i] == file)
{
@@ -971,7 +970,7 @@ closeAllVfds()
if (SizeVfdCache > 0)
{
- Assert(FileIsNotOpen(0)); /* Make sure ring not corrupted */
+ Assert(FileIsNotOpen(0)); /* Make sure ring not corrupted */
for (i = 1; i < SizeVfdCache; i++)
{
if (!FileIsNotOpen(i))
@@ -995,7 +994,7 @@ AtEOXact_Files(void)
if (SizeVfdCache > 0)
{
- Assert(FileIsNotOpen(0)); /* Make sure ring not corrupted */
+ Assert(FileIsNotOpen(0)); /* Make sure ring not corrupted */
for (i = 1; i < SizeVfdCache; i++)
{
if ((VfdCache[i].fdstate & FD_TEMPORARY) &&
@@ -1005,12 +1004,11 @@ AtEOXact_Files(void)
}
while (numAllocatedFiles > 0)
- {
FreeFile(allocatedFiles[0]);
- }
- /* Reset the tempfile name counter to 0; not really necessary,
- * but helps keep the names from growing unreasonably long.
+ /*
+ * Reset the tempfile name counter to 0; not really necessary, but
+ * helps keep the names from growing unreasonably long.
*/
tempFileCounter = 0;
}
@@ -1018,7 +1016,7 @@ AtEOXact_Files(void)
/*
* Operations on BufFiles --- a very incomplete emulation of stdio
- * atop virtual Files. Currently, we only support the buffered-I/O
+ * atop virtual Files. Currently, we only support the buffered-I/O
* aspect of stdio: a read or write of the low-level File occurs only
* when the buffer is filled or emptied. This is an even bigger win
* for virtual Files than ordinary kernel files, since reducing the
@@ -1032,12 +1030,13 @@ AtEOXact_Files(void)
* by elog(ERROR).
*/
-struct BufFile {
- File file; /* the underlying virtual File */
- bool dirty; /* does buffer need to be written? */
- int pos; /* next read/write position in buffer */
- int nbytes; /* total # of valid bytes in buffer */
- char buffer[BLCKSZ];
+struct BufFile
+{
+ File file; /* the underlying virtual File */
+ bool dirty; /* does buffer need to be written? */
+ int pos; /* next read/write position in buffer */
+ int nbytes; /* total # of valid bytes in buffer */
+ char buffer[BLCKSZ];
};
@@ -1046,10 +1045,10 @@ struct BufFile {
*
* This is comparable to fdopen() in stdio.
*/
-BufFile *
+BufFile *
BufFileCreate(File file)
{
- BufFile *bfile = (BufFile *) palloc(sizeof(BufFile));
+ BufFile *bfile = (BufFile *) palloc(sizeof(BufFile));
bfile->file = file;
bfile->dirty = false;
@@ -1065,7 +1064,7 @@ BufFileCreate(File file)
* Like fclose(), this also implicitly FileCloses the underlying File.
*/
void
-BufFileClose(BufFile *file)
+BufFileClose(BufFile * file)
{
/* flush any unwritten data */
BufFileFlush(file);
@@ -1080,10 +1079,10 @@ BufFileClose(BufFile *file)
* Like fread() except we assume 1-byte element size.
*/
size_t
-BufFileRead(BufFile *file, void *ptr, size_t size)
+BufFileRead(BufFile * file, void *ptr, size_t size)
{
- size_t nread = 0;
- size_t nthistime;
+ size_t nread = 0;
+ size_t nthistime;
if (file->dirty)
{
@@ -1126,10 +1125,10 @@ BufFileRead(BufFile *file, void *ptr, size_t size)
* Like fwrite() except we assume 1-byte element size.
*/
size_t
-BufFileWrite(BufFile *file, void *ptr, size_t size)
+BufFileWrite(BufFile * file, void *ptr, size_t size)
{
- size_t nwritten = 0;
- size_t nthistime;
+ size_t nwritten = 0;
+ size_t nthistime;
while (size > 0)
{
@@ -1170,7 +1169,7 @@ BufFileWrite(BufFile *file, void *ptr, size_t size)
* Like fflush()
*/
int
-BufFileFlush(BufFile *file)
+BufFileFlush(BufFile * file)
{
if (file->dirty)
{
@@ -1188,7 +1187,7 @@ BufFileFlush(BufFile *file)
* the new file offset (or -1 in case of error).
*/
long
-BufFileSeek(BufFile *file, long offset, int whence)
+BufFileSeek(BufFile * file, long offset, int whence)
{
if (BufFileFlush(file) < 0)
return -1L;