v1-0007-Make-blkreftable-API-use-size_t-ssize_t-consisten.patch

text/plain

Filename: v1-0007-Make-blkreftable-API-use-size_t-ssize_t-consisten.patch
Type: text/plain
Part: 6
Message: clean up size_t/ssize_t use with POSIX file system APIs

Patch

Format: format-patch
Series: patch v1-0007
Subject: Make blkreftable API use size_t/ssize_t consistently
File+
src/backend/backup/walsummary.c 7 7
src/bin/pg_walsummary/pg_walsummary.c 5 5
src/common/blkreftable.c 8 8
src/include/backup/walsummary.h 2 2
src/include/common/blkreftable.h 1 1
From dbdada0766c6bcad1c7aad45d0d3298f4d95a390 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Mon, 29 Jun 2026 13:37:54 +0200
Subject: [PATCH v1 07/15] Make blkreftable API use size_t/ssize_t consistently

It was using int for the input and output length, where size_t or
ssize_t would be more appropriate.  It might not matter in practice,
but it makes the APIs consistent at all levels.
---
 src/backend/backup/walsummary.c       | 14 +++++++-------
 src/bin/pg_walsummary/pg_walsummary.c | 10 +++++-----
 src/common/blkreftable.c              | 16 ++++++++--------
 src/include/backup/walsummary.h       |  4 ++--
 src/include/common/blkreftable.h      |  2 +-
 5 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/backend/backup/walsummary.c b/src/backend/backup/walsummary.c
index 48b7bd8c521..3d044a92417 100644
--- a/src/backend/backup/walsummary.c
+++ b/src/backend/backup/walsummary.c
@@ -269,11 +269,11 @@ IsWalSummaryFilename(char *filename)
 /*
  * Data read callback for use with CreateBlockRefTableReader.
  */
-int
-ReadWalSummary(void *wal_summary_io, void *data, int length)
+size_t
+ReadWalSummary(void *wal_summary_io, void *data, size_t length)
 {
 	WalSummaryIO *io = wal_summary_io;
-	int			nbytes;
+	ssize_t		nbytes;
 
 	nbytes = FileRead(io->file, data, length, io->filepos,
 					  WAIT_EVENT_WAL_SUMMARY_READ);
@@ -290,11 +290,11 @@ ReadWalSummary(void *wal_summary_io, void *data, int length)
 /*
  * Data write callback for use with WriteBlockRefTable.
  */
-int
-WriteWalSummary(void *wal_summary_io, void *data, int length)
+size_t
+WriteWalSummary(void *wal_summary_io, void *data, size_t length)
 {
 	WalSummaryIO *io = wal_summary_io;
-	int			nbytes;
+	ssize_t		nbytes;
 
 	nbytes = FileWrite(io->file, data, length, io->filepos,
 					   WAIT_EVENT_WAL_SUMMARY_WRITE);
@@ -306,7 +306,7 @@ WriteWalSummary(void *wal_summary_io, void *data, int length)
 	if (nbytes != length)
 		ereport(ERROR,
 				(errcode_for_file_access(),
-				 errmsg("could not write file \"%s\": wrote only %d of %d bytes at offset %lld",
+				 errmsg("could not write file \"%s\": wrote only %zd of %zu bytes at offset %lld",
 						FilePathName(io->file), nbytes,
 						length, (long long) io->filepos),
 				 errhint("Check free disk space.")));
diff --git a/src/bin/pg_walsummary/pg_walsummary.c b/src/bin/pg_walsummary/pg_walsummary.c
index c3e98ffe55e..ad674b7646a 100644
--- a/src/bin/pg_walsummary/pg_walsummary.c
+++ b/src/bin/pg_walsummary/pg_walsummary.c
@@ -41,8 +41,8 @@ static void dump_one_relation(ws_options *opt, RelFileLocator *rlocator,
 							  BlockRefTableReader *reader);
 static void help(const char *progname);
 static int	compare_block_numbers(const void *a, const void *b);
-static int	walsummary_read_callback(void *callback_arg, void *data,
-									 int length);
+static size_t walsummary_read_callback(void *callback_arg, void *data,
+									   size_t length);
 static void walsummary_error_callback(void *callback_arg, char *fmt, ...) pg_attribute_printf(2, 3);
 
 /*
@@ -241,11 +241,11 @@ walsummary_error_callback(void *callback_arg, char *fmt, ...)
 /*
  * Read callback.
  */
-int
-walsummary_read_callback(void *callback_arg, void *data, int length)
+size_t
+walsummary_read_callback(void *callback_arg, void *data, size_t length)
 {
 	ws_file_info *ws = callback_arg;
-	int			rc;
+	ssize_t		rc;
 
 	if ((rc = read(ws->fd, data, length)) < 0)
 		pg_fatal("could not read file \"%s\": %m", ws->filename);
diff --git a/src/common/blkreftable.c b/src/common/blkreftable.c
index 2bb91e39128..a4c72159f94 100644
--- a/src/common/blkreftable.c
+++ b/src/common/blkreftable.c
@@ -173,8 +173,8 @@ typedef struct BlockRefTableBuffer
 	io_callback_fn io_callback;
 	void	   *io_callback_arg;
 	char		data[BUFSIZE];
-	int			used;
-	int			cursor;
+	size_t		used;
+	size_t		cursor;
 	pg_crc32c	crc;
 } BlockRefTableBuffer;
 
@@ -223,9 +223,9 @@ struct BlockRefTableWriter
 static int	BlockRefTableComparator(const void *a, const void *b);
 static void BlockRefTableFlush(BlockRefTableBuffer *buffer);
 static void BlockRefTableRead(BlockRefTableReader *reader, void *data,
-							  int length);
+							  size_t length);
 static void BlockRefTableWrite(BlockRefTableBuffer *buffer, void *data,
-							   int length);
+							   size_t length);
 static void BlockRefTableFileTerminate(BlockRefTableBuffer *buffer);
 
 /*
@@ -1206,7 +1206,7 @@ BlockRefTableFlush(BlockRefTableBuffer *buffer)
  * buffered but not yet actually returned).
  */
 static void
-BlockRefTableRead(BlockRefTableReader *reader, void *data, int length)
+BlockRefTableRead(BlockRefTableReader *reader, void *data, size_t length)
 {
 	BlockRefTableBuffer *buffer = &reader->buffer;
 
@@ -1219,7 +1219,7 @@ BlockRefTableRead(BlockRefTableReader *reader, void *data, int length)
 			 * If any buffered data is available, use that to satisfy as much
 			 * of the request as possible.
 			 */
-			int			bytes_to_copy = Min(length, buffer->used - buffer->cursor);
+			size_t		bytes_to_copy = Min(length, buffer->used - buffer->cursor);
 
 			memcpy(data, &buffer->data[buffer->cursor], bytes_to_copy);
 			COMP_CRC32C(buffer->crc, &buffer->data[buffer->cursor],
@@ -1234,7 +1234,7 @@ BlockRefTableRead(BlockRefTableReader *reader, void *data, int length)
 			 * If the request length is long, read directly into caller's
 			 * buffer.
 			 */
-			int			bytes_read;
+			size_t		bytes_read;
 
 			bytes_read = buffer->io_callback(buffer->io_callback_arg,
 											 data, length);
@@ -1271,7 +1271,7 @@ BlockRefTableRead(BlockRefTableReader *reader, void *data, int length)
  * and update the running CRC calculation for that data.
  */
 static void
-BlockRefTableWrite(BlockRefTableBuffer *buffer, void *data, int length)
+BlockRefTableWrite(BlockRefTableBuffer *buffer, void *data, size_t length)
 {
 	/* Update running CRC calculation. */
 	COMP_CRC32C(buffer->crc, data, length);
diff --git a/src/include/backup/walsummary.h b/src/include/backup/walsummary.h
index 093b42df473..748c679de03 100644
--- a/src/include/backup/walsummary.h
+++ b/src/include/backup/walsummary.h
@@ -42,8 +42,8 @@ extern File OpenWalSummaryFile(WalSummaryFile *ws, bool missing_ok);
 extern void RemoveWalSummaryIfOlderThan(WalSummaryFile *ws,
 										time_t cutoff_time);
 
-extern int	ReadWalSummary(void *wal_summary_io, void *data, int length);
-extern int	WriteWalSummary(void *wal_summary_io, void *data, int length);
+extern size_t ReadWalSummary(void *wal_summary_io, void *data, size_t length);
+extern size_t WriteWalSummary(void *wal_summary_io, void *data, size_t length);
 extern void ReportWalSummaryError(void *callback_arg, char *fmt, ...) pg_attribute_printf(2, 3);
 
 #endif							/* WALSUMMARY_H */
diff --git a/src/include/common/blkreftable.h b/src/include/common/blkreftable.h
index 42b11b0a2b1..fbb8af4d6e5 100644
--- a/src/include/common/blkreftable.h
+++ b/src/include/common/blkreftable.h
@@ -43,7 +43,7 @@ typedef struct BlockRefTableWriter BlockRefTableWriter;
  *
  * report_error_fn should not return.
  */
-typedef int (*io_callback_fn) (void *callback_arg, void *data, int length);
+typedef size_t (*io_callback_fn) (void *callback_arg, void *data, size_t length);
 typedef void (*report_error_fn) (void *callback_arg, char *msg, ...) pg_attribute_printf(2, 3);
 
 
-- 
2.54.0