diff options
author | Noah Misch <noah@leadboat.com> | 2025-04-20 12:00:17 -0700 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2025-04-20 12:00:17 -0700 |
commit | 818013665259d4242ba641aad705ebe5a3e2db8e (patch) | |
tree | f9d9b4d9a00d57f2dcf5417aee1fe9fb9c278452 /src/include | |
parent | 714bd9e3a733a98da47531a750182ee5981cc3ed (diff) | |
download | postgresql-818013665259d4242ba641aad705ebe5a3e2db8e.tar.gz postgresql-818013665259d4242ba641aad705ebe5a3e2db8e.zip |
Comment on need to MarkBufferDirty() if omitting DELAY_CHKPT_START.
Blocking checkpoint phase 2 requires MarkBufferDirty() and
BUFFER_LOCK_EXCLUSIVE; neither suffices by itself. transam/README documents
this, citing SyncOneBuffer(). Update the DELAY_CHKPT_START documentation to
say this. Expand the heap_inplace_update_and_unlock() comment that cites
XLogSaveBufferForHint() as precedent, since heap_inplace_update_and_unlock()
could have opted not to use DELAY_CHKPT_START.
Commit 8e7e672cdaa6bfec85d4d5dd9be84159df23bb41 added DELAY_CHKPT_START to
heap_inplace_update_and_unlock(). Since commit
bc6bad88572501aecaa2ac5d4bc900ac0fd457d5 reverted it in non-master branches,
no back-patch.
Discussion: https://postgr.es/m/20250406180054.26.nmisch@google.com
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/storage/proc.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index f51b03d3822..86c5f998c77 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -110,10 +110,10 @@ extern PGDLLIMPORT int FastPathLockGroupsPerBackend; * is inserted prior to the new redo point, the corresponding data changes will * also be flushed to disk before the checkpoint can complete. (In the * extremely common case where the data being modified is in shared buffers - * and we acquire an exclusive content lock on the relevant buffers before - * writing WAL, this mechanism is not needed, because phase 2 will block - * until we release the content lock and then flush the modified data to - * disk.) + * and we acquire an exclusive content lock and MarkBufferDirty() on the + * relevant buffers before writing WAL, this mechanism is not needed, because + * phase 2 will block until we release the content lock and then flush the + * modified data to disk. See transam/README and SyncOneBuffer().) * * Setting DELAY_CHKPT_COMPLETE prevents the system from moving from phase 2 * to phase 3. This is useful if we are performing a WAL-logged operation that |