Index: src/backend/storage/buffer/bufmgr.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v
retrieving revision 1.202
diff -c -r1.202 bufmgr.c
*** src/backend/storage/buffer/bufmgr.c	6 Jan 2006 00:04:20 -0000	1.202
--- src/backend/storage/buffer/bufmgr.c	23 Feb 2006 09:56:41 -0000
***************
*** 123,128 ****
--- 123,129 ----
  	bool		found;
  	bool		isExtend;
  	bool		isLocalBuf;
+     BufFlags    setdirty;
  
  	/* Make sure we will have room to remember the buffer pin */
  	ResourceOwnerEnlargeBuffers(CurrentResourceOwner);
***************
*** 223,228 ****
--- 224,231 ----
  
  	bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr);
  
+     setdirty = ~BM_DIRTY;
+ 
  	if (isExtend)
  	{
  		/* new buffers are zero-filled */
***************
*** 249,254 ****
--- 252,258 ----
  						 errmsg("invalid page header in block %u of relation \"%s\"; zeroing out page",
  								blockNum, RelationGetRelationName(reln))));
  				MemSet((char *) bufBlock, 0, BLCKSZ);
+                 setdirty = BM_DIRTY;
  			}
  			else
  				ereport(ERROR,
***************
*** 261,272 ****
  	if (isLocalBuf)
  	{
  		/* Only need to adjust flags */
! 		bufHdr->flags |= BM_VALID;
  	}
  	else
  	{
  		/* Set BM_VALID, terminate IO, and wake up any waiters */
! 		TerminateBufferIO(bufHdr, false, BM_VALID);
  	}
  
  	if (VacuumCostActive)
--- 265,276 ----
  	if (isLocalBuf)
  	{
  		/* Only need to adjust flags */
! 		bufHdr->flags |= BM_VALID | setdirty;
  	}
  	else
  	{
  		/* Set BM_VALID, terminate IO, and wake up any waiters */
! 		TerminateBufferIO(bufHdr, false, BM_VALID | setdirty);
  	}
  
  	if (VacuumCostActive)
