summaryrefslogtreecommitdiff
path: root/src/backend/storage/lmgr/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/storage/lmgr/proc.c')
-rw-r--r--src/backend/storage/lmgr/proc.c43
1 files changed, 12 insertions, 31 deletions
diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c
index 11d0c70f6d..90a37332f3 100644
--- a/src/backend/storage/lmgr/proc.c
+++ b/src/backend/storage/lmgr/proc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.161 2005/07/31 17:19:19 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.162 2005/08/08 03:11:55 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -144,7 +144,7 @@ InitProcGlobal(void)
ShmemInitStruct("Proc Header", sizeof(PROC_HDR), &foundProcGlobal);
/*
- * Create or attach to the PGPROC structures for dummy (checkpoint)
+ * Create or attach to the PGPROC structures for dummy (bgwriter)
* processes, too. These do not get linked into the freeProcs list.
*/
DummyProcs = (PGPROC *)
@@ -289,9 +289,10 @@ InitProcess(void)
/*
* InitDummyProcess -- create a dummy per-process data structure
*
- * This is called by checkpoint processes so that they will have a MyProc
- * value that's real enough to let them wait for LWLocks. The PGPROC and
- * sema that are assigned are the extra ones created during InitProcGlobal.
+ * This is called by bgwriter and similar processes so that they will have a
+ * MyProc value that's real enough to let them wait for LWLocks. The PGPROC
+ * and sema that are assigned are the extra ones created during
+ * InitProcGlobal.
*
* Dummy processes are presently not expected to wait for real (lockmgr)
* locks, nor to participate in sinval messaging.
@@ -485,27 +486,12 @@ ProcKill(int code, Datum arg)
Assert(MyProc != NULL);
- /* Release any LW locks I am holding */
- LWLockReleaseAll();
-
/*
- * Make real sure we release any buffer locks and pins we might be
- * holding, too. It is pretty ugly to do this here and not in a
- * shutdown callback registered by the bufmgr ... but we must do this
- * *after* LWLockReleaseAll and *before* zapping MyProc.
+ * Release any LW locks I am holding. There really shouldn't be any,
+ * but it's cheap to check again before we cut the knees off the LWLock
+ * facility by releasing our PGPROC ...
*/
- AtProcExit_Buffers();
-
- /* Get off any wait queue I might be on */
- LockWaitCancel();
-
- /* Remove from the standard lock table */
- LockReleaseAll(DEFAULT_LOCKMETHOD, true);
-
-#ifdef USER_LOCKS
- /* Remove from the user lock table */
- LockReleaseAll(USER_LOCKMETHOD, true);
-#endif
+ LWLockReleaseAll();
/* Remove our PGPROC from the PGPROC array in shared memory */
ProcArrayRemove(MyProc);
@@ -523,7 +509,7 @@ ProcKill(int code, Datum arg)
}
/*
- * DummyProcKill() -- Cut-down version of ProcKill for dummy (checkpoint)
+ * DummyProcKill() -- Cut-down version of ProcKill for dummy (bgwriter)
* processes. The PGPROC and sema are not released, only marked
* as not-in-use.
*/
@@ -539,14 +525,9 @@ DummyProcKill(int code, Datum arg)
Assert(MyProc == dummyproc);
- /* Release any LW locks I am holding */
+ /* Release any LW locks I am holding (see notes above) */
LWLockReleaseAll();
- /* Release buffer locks and pins, too */
- AtProcExit_Buffers();
-
- /* I can't be on regular lock queues, so needn't check */
-
/* Mark dummy proc no longer in use */
MyProc->pid = 0;