diff options
| author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-05-19 21:35:48 +0000 |
|---|---|---|
| committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-05-19 21:35:48 +0000 |
| commit | ee3b71f6bce929b07636f76d1654832cb6b5a489 (patch) | |
| tree | ce95108d3c0e832555b78e96afb173458991b19e /src/backend/storage/buffer | |
| parent | 6910032a56dd3841be137b4bef7c57ef32a60ac8 (diff) | |
| download | postgresql-ee3b71f6bce929b07636f76d1654832cb6b5a489.tar.gz | |
Split the shared-memory array of PGPROC pointers out of the sinval
communication structure, and make it its own module with its own lock.
This should reduce contention at least a little, and it definitely makes
the code seem cleaner. Per my recent proposal.
Diffstat (limited to 'src/backend/storage/buffer')
| -rw-r--r-- | src/backend/storage/buffer/buf_init.c | 4 | ||||
| -rw-r--r-- | src/backend/storage/buffer/bufmgr.c | 10 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/backend/storage/buffer/buf_init.c b/src/backend/storage/buffer/buf_init.c index 1b8f042079..b2537cbc07 100644 --- a/src/backend/storage/buffer/buf_init.c +++ b/src/backend/storage/buffer/buf_init.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/buf_init.c,v 1.72 2005/03/04 20:21:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/buf_init.c,v 1.73 2005/05/19 21:35:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -115,7 +115,7 @@ InitBufferPool(void) buf->flags = 0; buf->usage_count = 0; buf->refcount = 0; - buf->wait_backend_id = 0; + buf->wait_backend_pid = 0; SpinLockInit(&buf->buf_hdr_lock); diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index e3a60612e3..1fe681e1ab 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.188 2005/03/20 22:00:53 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.189 2005/05/19 21:35:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -825,11 +825,11 @@ UnpinBuffer(BufferDesc *buf, bool fixOwner, bool trashOK) buf->refcount == 1) { /* we just released the last pin other than the waiter's */ - BackendId wait_backend_id = buf->wait_backend_id; + int wait_backend_pid = buf->wait_backend_pid; buf->flags &= ~BM_PIN_COUNT_WAITER; UnlockBufHdr_NoHoldoff(buf); - ProcSendSignal(wait_backend_id); + ProcSendSignal(wait_backend_pid); } else UnlockBufHdr_NoHoldoff(buf); @@ -1678,7 +1678,7 @@ UnlockBuffers(void) * signal. */ if ((buf->flags & BM_PIN_COUNT_WAITER) != 0 && - buf->wait_backend_id == MyBackendId) + buf->wait_backend_pid == MyProcPid) buf->flags &= ~BM_PIN_COUNT_WAITER; UnlockBufHdr_NoHoldoff(buf); @@ -1820,7 +1820,7 @@ LockBufferForCleanup(Buffer buffer) LockBuffer(buffer, BUFFER_LOCK_UNLOCK); elog(ERROR, "multiple backends attempting to wait for pincount 1"); } - bufHdr->wait_backend_id = MyBackendId; + bufHdr->wait_backend_pid = MyProcPid; bufHdr->flags |= BM_PIN_COUNT_WAITER; PinCountWaitBuf = bufHdr; UnlockBufHdr_NoHoldoff(bufHdr); |
