diff --git a/src/backend/storage/aio/read_stream.c b/src/backend/storage/aio/read_stream.c
index 04bdb5e6d4..18e9b4f3c4 100644
--- a/src/backend/storage/aio/read_stream.c
+++ b/src/backend/storage/aio/read_stream.c
@@ -666,6 +666,8 @@ read_stream_next_buffer(ReadStream *stream, void **per_buffer_data)
 										READ_BUFFERS_ISSUE_ADVICE : 0)))
 			{
 				/* Fast return. */
+				if (per_buffer_data)
+					*per_buffer_data = get_per_buffer_data(stream, oldest_buffer_index);
 				return buffer;
 			}
 
@@ -682,9 +684,14 @@ read_stream_next_buffer(ReadStream *stream, void **per_buffer_data)
 			stream->distance = 0;
 			stream->oldest_buffer_index = stream->next_buffer_index;
 			stream->pinned_buffers = 0;
+			oldest_buffer_index = stream->next_buffer_index;
 		}
 
 		stream->fast_path = false;
+
+		if (per_buffer_data)
+			*per_buffer_data = get_per_buffer_data(stream, oldest_buffer_index);
+
 		return buffer;
 	}
 #endif
