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
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