aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/bufmgr.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2000-04-10 23:41:52 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2000-04-10 23:41:52 +0000
commit2692d329eba45b30a038309f3e0ddb8d03f6e830 (patch)
tree2f36ff77e9b39bfc6f66456d1ff28acde4ff96c1 /src/backend/storage/buffer/bufmgr.c
parenta447ae22210bdef38e82010e3d811e7c703009c0 (diff)
downloadpostgresql-2692d329eba45b30a038309f3e0ddb8d03f6e830.tar.gz
postgresql-2692d329eba45b30a038309f3e0ddb8d03f6e830.zip
Tweak smgrblindwrt per advice from Vadim: add parameter indicating
whether to do fsync or not, and if so (which should be seldom) just do the fsync immediately. This way we need not build data structures in md.c/fd.c for blind writes.
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
-rw-r--r--src/backend/storage/buffer/bufmgr.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 0887f3d1ecd..b5eb53b03a3 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.78 2000/04/09 04:43:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.79 2000/04/10 23:41:49 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1127,7 +1127,8 @@ BufferSync()
bufHdr->blind.relname,
bufdb, bufrel,
bufHdr->tag.blockNum,
- (char *) MAKE_PTR(bufHdr->data));
+ (char *) MAKE_PTR(bufHdr->data),
+ true); /* must fsync */
}
else
{
@@ -1529,7 +1530,8 @@ BufferReplace(BufferDesc *bufHdr)
status = smgrblindwrt(DEFAULT_SMGR, bufHdr->blind.dbname,
bufHdr->blind.relname, bufdb, bufrel,
bufHdr->tag.blockNum,
- (char *) MAKE_PTR(bufHdr->data));
+ (char *) MAKE_PTR(bufHdr->data),
+ false); /* no fsync */
}
#ifndef OPTIMIZE_SINGLE
@@ -1544,9 +1546,11 @@ BufferReplace(BufferDesc *bufHdr)
return FALSE;
/* If we had marked this buffer as needing to be fsync'd, we can forget
- * about that, because it's now the storage manager's responsibility.
+ * about that, because it's now the storage manager's responsibility
+ * (but only if we called smgrwrite, not smgrblindwrt).
*/
- ClearBufferDirtiedByMe(BufferDescriptorGetBuffer(bufHdr), bufHdr);
+ if (reln != (Relation) NULL)
+ ClearBufferDirtiedByMe(BufferDescriptorGetBuffer(bufHdr), bufHdr);
BufferFlushCount++;