diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-04-10 23:41:52 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-04-10 23:41:52 +0000 |
commit | 2692d329eba45b30a038309f3e0ddb8d03f6e830 (patch) | |
tree | 2f36ff77e9b39bfc6f66456d1ff28acde4ff96c1 /src/backend/storage/buffer/bufmgr.c | |
parent | a447ae22210bdef38e82010e3d811e7c703009c0 (diff) | |
download | postgresql-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.c | 14 |
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++; |