diff -ur ../orig/src/backend/access/transam/xact.c src/backend/access/transam/xact.c
--- ../orig/src/backend/access/transam/xact.c	2002-05-27 16:29:37.000000000 +0200
+++ src/backend/access/transam/xact.c	2002-06-10 14:24:54.000000000 +0200
@@ -182,8 +182,6 @@
 #include "pgstat.h"
 
 
-extern bool SharedBufferChanged;
-
 static void AbortTransaction(void);
 static void AtAbort_Cache(void);
 static void AtAbort_Locks(void);
@@ -991,8 +989,6 @@
 	AtCommit_Memory();
 	AtEOXact_Files();
 
-	SharedBufferChanged = false;	/* safest place to do it */
-
 	/* Count transaction commit in statistics collector */
 	pgstat_count_xact_commit();
 
@@ -1094,8 +1090,6 @@
 	AtEOXact_Files();
 	AtAbort_Locks();
 
-	SharedBufferChanged = false;	/* safest place to do it */
-
 	/* Count transaction abort in statistics collector */
 	pgstat_count_xact_rollback();
 
diff -ur ../orig/src/backend/storage/buffer/buf_init.c src/backend/storage/buffer/buf_init.c
--- ../orig/src/backend/storage/buffer/buf_init.c	2001-11-05 19:46:27.000000000 +0100
+++ src/backend/storage/buffer/buf_init.c	2002-06-10 15:02:24.000000000 +0200
@@ -60,9 +60,6 @@
 
 long	   *PrivateRefCount;	/* also used in freelist.c */
 bits8	   *BufferLocks;		/* flag bits showing locks I have set */
-BufferTag  *BufferTagLastDirtied;		/* tag buffer had when last
-										 * dirtied by me */
-bool	   *BufferDirtiedByMe;	/* T if buf has been dirtied in cur xact */
 
 
 /*
@@ -235,9 +232,6 @@
 	BufferBlockPointers = (Block *) calloc(NBuffers, sizeof(Block));
 	PrivateRefCount = (long *) calloc(NBuffers, sizeof(long));
 	BufferLocks = (bits8 *) calloc(NBuffers, sizeof(bits8));
-	BufferTagLastDirtied = (BufferTag *) calloc(NBuffers, sizeof(BufferTag));
-	BufferDirtiedByMe = (bool *) calloc(NBuffers, sizeof(bool));
-
 	/*
 	 * Convert shmem offsets into addresses as seen by this process. This
 	 * is just to speed up the BufferGetBlock() macro.
diff -ur ../orig/src/backend/storage/buffer/bufmgr.c src/backend/storage/buffer/bufmgr.c
--- ../orig/src/backend/storage/buffer/bufmgr.c	2002-04-16 01:47:12.000000000 +0200
+++ src/backend/storage/buffer/bufmgr.c	2002-06-10 15:00:57.000000000 +0200
@@ -67,15 +67,6 @@
 extern long int BufferFlushCount;
 extern long int LocalBufferFlushCount;
 
-/*
- * It's used to avoid disk writes for read-only transactions
- * (i.e. when no one shared buffer was changed by transaction).
- * We set it to true in WriteBuffer/WriteNoReleaseBuffer when
- * marking shared buffer as dirty. We set it to false in xact.c
- * after transaction is committed/aborted.
- */
-bool		SharedBufferChanged = false;
-
 static void WaitIO(BufferDesc *buf);
 static void StartBufferIO(BufferDesc *buf, bool forInput);
 static void TerminateBufferIO(BufferDesc *buf);
@@ -593,8 +584,6 @@
 
 	bufHdr = &BufferDescriptors[buffer - 1];
 
-	SharedBufferChanged = true;
-
 	LWLockAcquire(BufMgrLock, LW_EXCLUSIVE);
 	Assert(bufHdr->refcount > 0);
 
@@ -623,8 +612,6 @@
 
 	bufHdr = &BufferDescriptors[buffer - 1];
 
-	SharedBufferChanged = true;
-
 	LWLockAcquire(BufMgrLock, LW_EXCLUSIVE);
 	Assert(bufHdr->refcount > 0);
 
@@ -1901,12 +1888,9 @@
  *
  *	Mark a buffer dirty when we have updated tuple commit-status bits in it.
  *
- * This is similar to WriteNoReleaseBuffer, except that we do not set
- * SharedBufferChanged or BufferDirtiedByMe, because we have not made a
+ * This is similar to WriteNoReleaseBuffer, except that we have not made a
  * critical change that has to be flushed to disk before xact commit --- the
- * status-bit update could be redone by someone else just as easily.  The
- * buffer will be marked dirty, but it will not be written to disk until
- * there is another reason to write it.
+ * status-bit update could be redone by someone else just as easily.
  *
  * This routine might get called many times on the same page, if we are making
  * the first scan after commit of an xact that added/deleted many tuples.
diff -ur ../orig/src/include/storage/buf_internals.h src/include/storage/buf_internals.h
--- ../orig/src/include/storage/buf_internals.h	2001-11-05 19:46:35.000000000 +0100
+++ src/include/storage/buf_internals.h	2002-06-10 15:03:44.000000000 +0200
@@ -170,9 +170,6 @@
 /* bufmgr.c */
 extern BufferDesc *BufferDescriptors;
 extern bits8 *BufferLocks;
-extern BufferTag *BufferTagLastDirtied;
-extern LockRelId *BufferRelidLastDirtied;
-extern bool *BufferDirtiedByMe;
 
 /* localbuf.c */
 extern BufferDesc *LocalBufferDescriptors;
