pgsql: Operate XLogCtl->log{Write,Flush}Result with atomics

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Operate XLogCtl->log{Write,Flush}Result with atomics
Date: 2024-04-05 14:17:21
Message-ID: E1rskNd-000deR-7Z@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Operate XLogCtl->log{Write,Flush}Result with atomics

This removes the need to hold both the info_lck spinlock and
WALWriteLock to update them. We use stock atomic write instead, with
WALWriteLock held. Readers can use atomic read, without any locking.

This allows for some code to be reordered: some places were a bit
contorted to avoid repeated spinlock acquisition, but that's no longer a
concern, so we can turn them to more natural coding. Some further
changes are possible (maybe to performance wins), but in this commit I
did rather minimal ones only, to avoid increasing the blast radius.

Reviewed-by: Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>
Reviewed-by: Jeff Davis <pgsql(at)j-davis(dot)com>
Reviewed-by: Andres Freund <andres(at)anarazel(dot)de> (earlier versions)
Discussion: https://postgr.es/m/20200831182156.GA3983@alvherre.pgsql

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ee1cbe806dad47674ded35427c6ba217531847d6

Modified Files
--------------
src/backend/access/transam/xlog.c | 107 +++++++++++++++++++++-----------------
1 file changed, 59 insertions(+), 48 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tomas Vondra 2024-04-05 14:30:16 pgsql: Align blocks in incremental backups to BLCKSZ
Previous Message Amit Kapila 2024-04-05 04:34:02 pgsql: Allow synced slots to have their inactive_since.