From 29ce50091d128faaabd0a4044e91a7d0da11bb8e Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Fri, 18 May 2018 17:53:12 +0200 Subject: Fix error message on short read of pg_control Instead of saying "error: success", indicate that we got a working read but it was too short. --- src/backend/access/transam/xlog.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/backend/access/transam/xlog.c') diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 742e0e7115e..0cb1e9981a8 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4475,6 +4475,7 @@ ReadControlFile(void) { pg_crc32c crc; int fd; + int r; /* * Read data... @@ -4489,10 +4490,17 @@ ReadControlFile(void) XLOG_CONTROL_FILE))); pgstat_report_wait_start(WAIT_EVENT_CONTROL_FILE_READ); - if (read(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData)) - ereport(PANIC, - (errcode_for_file_access(), - errmsg("could not read from control file: %m"))); + r = read(fd, ControlFile, sizeof(ControlFileData)); + if (r != sizeof(ControlFileData)) + { + if (r < 0) + ereport(PANIC, + (errcode_for_file_access(), + errmsg("could not read from control file: %m"))); + else + ereport(PANIC, + (errmsg("could not read from control file: read %d bytes, expected %d", r, (int) sizeof(ControlFileData)))); + } pgstat_report_wait_end(); close(fd); -- cgit v1.2.3