From e587e2e3e39ec54772905b8e0ac7155a03253934 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Tue, 6 Mar 2012 10:44:51 +0200 Subject: [PATCH] Make the comments more clear on the fact that UpdateFullPageWrites() is not safe to call concurrently from multiple processes. --- src/backend/access/transam/xlog.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 49d4b366526..c23cf635395 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8442,6 +8442,9 @@ XLogReportParameters(void) /* * Update full_page_writes in shared memory, and write an * XLOG_FPW_CHANGE record if necessary. + * + * Note: this function assumes there is no other process running + * concurrently that could update it. */ void UpdateFullPageWrites(void) @@ -8452,8 +8455,8 @@ UpdateFullPageWrites(void) * Do nothing if full_page_writes has not been changed. * * It's safe to check the shared full_page_writes without the lock, - * because we can guarantee that there is no concurrently running - * process which can update it. + * because we assume that there is no concurrently running process + * which can update it. */ if (fullPageWrites == Insert->fullPageWrites) return; @@ -8490,7 +8493,6 @@ UpdateFullPageWrites(void) XLogInsert(RM_XLOG_ID, XLOG_FPW_CHANGE, &rdata); } - if (!fullPageWrites) { LWLockAcquire(WALInsertLock, LW_EXCLUSIVE); -- 2.30.2