pgsql: Support buffer forwarding in read_stream.c. - Mailing list pgsql-committers

From Thomas Munro
Subject pgsql: Support buffer forwarding in read_stream.c.
Date
Msg-id E1tvVCh-000FbT-2c@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Support buffer forwarding in read_stream.c.

In preparation for a follow-up change to the buffer manager, teach
read_stream.c to manage buffers "forwarded" from one StartReadBuffers()
call to the next after a short read.  This involves a small amount of
extra book-keeping, and opens the way for lower levels to split I/O
operations without having to drop pins, as required for efficient
handling of various edge cases.

Concretely, the "buffers" argument will change from an out parameter to
an in/out parameter.  Buffer queue elements must be initialized on first
use and cleared after they're consumed, but forwarded buffers are left
where they fall ahead of the current pending read in the queue, ready
for use by the operation that continues where a short read left off.
The stream also needs to count them for pin limit management and release
them on reset/early end.

Tested-by: Andres Freund <andres@anarazel.de> (earlier versions)
Discussion: https://postgr.es/m/CA%2BhUKGK_%3D4CVmMHvsHjOVrK6t4F%3DLBpFzsrr3R%2BaJYN8kcTfWg%40mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/ed0b87caaca1eb3daa0f76f32499da7628286919

Modified Files
--------------
src/backend/storage/aio/read_stream.c | 89 ++++++++++++++++++++++++++++++-----
1 file changed, 78 insertions(+), 11 deletions(-)


pgsql-committers by date:

Previous
From: Fujii Masao
Date:
Subject: pgsql: doc: Remove incorrect description about dropping replication slo
Next
From: Thomas Munro
Date:
Subject: pgsql: Support buffer forwarding in StartReadBuffers().