Andres Freund <andres@anarazel.de> writes:
> Allow Pin/UnpinBuffer to operate in a lockfree manner.
This commit has broken buildfarm member gaur, and no doubt pademelon
will be equally unhappy once it catches up to HEAD. The reason is that
you've caused localbuf.c to perform a whole bunch of atomic operations
on its buffer headers; and on machines that don't have native atomic
ops, there's a spinlock underlying those; and you did not bother to
ensure that appropriate SpinLockInit operations happen for local-buffer
headers. (HPPA, possibly alone among supported platforms, does not
think that SpinLockInit is equivalent to memset-to-zeroes.)
While we could fix this by performing suitable SpinLockInit's on
local-buffer headers, I have to think that that's fundamentally the
wrong direction. The *entire* *point* of having local buffers is
that they are not subject to concurrency overhead. So IMO, sticking
atomic-ops calls into localbuf.c is broken on its face.
regards, tom lane