BufferAlloc() doesn't allocate write error buffers.
authorHiroshi Inoue
Fri, 29 Sep 2000 03:55:45 +0000 (03:55 +0000)
committerHiroshi Inoue
Fri, 29 Sep 2000 03:55:45 +0000 (03:55 +0000)
Remove compiler waring(my fault).

src/backend/storage/buffer/bufmgr.c

index 2324089e768ea1160451fd112e400d93d64bb0ea..24a70d618858d19d63a14991a23ac30628610bd5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.84 2000/09/29 01:23:47 inoue Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.85 2000/09/29 03:55:45 inoue Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -448,6 +448,16 @@ BufferAlloc(Relation reln,
        {
            bool        smok;
 
+           /*
+            *  skip write error buffers 
+            */
+           if ((buf->flags & BM_IO_ERROR) != 0)
+           {
+               PrivateRefCount[BufferDescriptorGetBuffer(buf) - 1] = 0;
+               buf->refcount--;
+               buf = (BufferDesc *) NULL;
+               continue;
+           }
            /*
             * Set BM_IO_IN_PROGRESS to keep anyone from doing anything
             * with the contents of the buffer while we write it out. We
@@ -2529,7 +2539,7 @@ AbortBufferIO(void)
        else
        {
            Assert((buf->flags & BM_DIRTY) != 0);
-           if (buf->flags & BM_IO_ERROR != 0)
+           if ((buf->flags & BM_IO_ERROR) != 0)
            {
                elog(NOTICE, "write error may be permanent: cannot write block %u for %s/%s",
                buf->tag.blockNum, buf->blind.dbname, buf->blind.relname);