diff options
author | Andres Freund <andres@anarazel.de> | 2015-06-29 14:53:32 +0200 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2015-06-29 14:53:32 +0200 |
commit | 07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978 (patch) | |
tree | ce19e0ccdde4f7065524a15dfc3e7236f53e1e9f /src | |
parent | c5e5d444de85a7caff462443c5915544d4406a62 (diff) | |
download | postgresql-07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978.tar.gz postgresql-07cb8b02ab4c8b65bb2e3b87ad2402fdc6cce978.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/include/storage/s_lock.h | 2 |
1 files changed, 1 insertions, 1 deletions
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 */ |