postgresql/src/backend/storage
Thomas Munro d87251048a Replace buffer I/O locks with condition variables.
1.  Backends waiting for buffer I/O are now interruptible.

2.  If something goes wrong in a backend that is currently performing
I/O, waiting backends no longer wake up until that backend reaches
AbortBufferIO() and broadcasts on the CV.  Previously, any waiters would
wake up (because the I/O lock was automatically released) and then
busy-loop until AbortBufferIO() cleared BM_IO_IN_PROGRESS.

3.  LWLockMinimallyPadded is removed, as it would now be unused.

Author: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Thomas Munro <thomas.munro@gmail.com>
Reviewed-by: Julien Rouhaud <rjuju123@gmail.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> (earlier version, 2016)
Discussion: https://postgr.es/m/CA%2BhUKGJ8nBFrjLuCTuqKN0pd2PQOwj9b_jnsiGFFMDvUxahj_A%40mail.gmail.com
Discussion: https://postgr.es/m/CA+Tgmoaj2aPti0yho7FeEf2qt-JgQPRWb0gci_o1Hfr=C56Xng@mail.gmail.com
2021-03-11 10:36:17 +13:00
..
buffer Replace buffer I/O locks with condition variables. 2021-03-11 10:36:17 +13:00
file Move our p{read,write}v replacements into their own files. 2021-01-14 11:16:59 +13:00
freespace Update copyright for 2021 2021-01-02 13:06:25 -05:00
ipc Remove obsolete comment for WaitForProcSignalBarrier(). 2021-03-02 09:30:57 +13:00
large_object Update copyright for 2021 2021-01-02 13:06:25 -05:00
lmgr Replace buffer I/O locks with condition variables. 2021-03-11 10:36:17 +13:00
page Add TID Range Scans to support efficient scanning ranges of TIDs 2021-02-27 22:59:36 +13:00
smgr Use errmsg_internal for debug messages 2021-02-17 11:33:25 +01:00
sync Use errmsg_internal for debug messages 2021-02-17 11:33:25 +01:00
Makefile Refactor the fsync queue for wider use. 2019-04-04 23:38:38 +13:00