From 07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978 Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Mon, 29 Jun 2015 14:53:32 +0200
Subject: [PATCH] Replace ia64 S_UNLOCK compiler barrier with a full memory
 barrier.

_Asm_sched_fence() is just a compiler barrier, not a memory barrier. But
spinlock release on IA64 needs, at the very least, release
semantics. Use a full barrier instead.

This might be the cause for the occasional failures on buildfarm member
anole.

Discussion: 20150629101108.GB17640@alap3.anarazel.de
---
 src/include/storage/s_lock.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index c63cf54c8eb..30f28b088ab 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -806,7 +806,7 @@ typedef unsigned int slock_t;
 /* On IA64, it's a win to use a non-locking test before the xchg proper */
 #define TAS_SPIN(lock)	(*(lock) ? 1 : TAS(lock))
 #define S_UNLOCK(lock)	\
-	do { _Asm_sched_fence(); (*(lock)) = 0; } while (0)
+	do { _Asm_mf(); (*(lock)) = 0; } while (0)
 
 #endif	/* HPUX on IA64, non gcc */
 
-- 
GitLab