pgsql: Call xlc __isync() after, not before, associated compare-and-swa - Mailing list pgsql-committers

From Noah Misch
Subject pgsql: Call xlc __isync() after, not before, associated compare-and-swa
Date
Msg-id E1aWyaL-0003X4-RM@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Call xlc __isync() after, not before, associated compare-and-swap.

Architecture reference material specifies this order, and s_lock.h
inline assembly agrees.  The former order failed to provide mutual
exclusion to lwlock.c and perhaps to other clients.  The two xlc
buildfarm members, hornet and mandrill, have failed sixteen times with
duplicate key errors involving pg_class_oid_index or pg_type_oid_index.
Back-patch to 9.5, where commit b64d92f1a5602c55ee8b27a7ac474f03b7aee340
introduced atomics.

Reviewed by Andres Freund and Tom Lane.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/5882ca66868e1f6fe287dfb41ebaab0bcb1784b2

Modified Files
--------------
src/bin/pgbench/.gitignore             |  1 +
src/bin/pgbench/Makefile               |  6 ++++++
src/bin/pgbench/t/001_pgbench.pl       | 25 +++++++++++++++++++++++++
src/include/port/atomics/generic-xlc.h | 22 ++++++++++++++--------
src/tools/msvc/clean.bat               |  1 +
5 files changed, 47 insertions(+), 8 deletions(-)


pgsql-committers by date:

Previous
From: Simon Riggs
Date:
Subject: pgsql: Correct StartupSUBTRANS for page wraparound
Next
From: Noah Misch
Date:
Subject: pgsql: Call xlc __isync() after, not before, associated compare-and-swa