postgres.git / summary / log / commit / refs

commit    8b1ec7d2953273501c5cea8185b6358dc7709eb5
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Mon Aug 01 07:38:23 2022 +0000
First released in: 16.0, 12.12, 13.8, 14.5, 15.0

    Fix error reporting after ioctl() call with pg_upgrade --clone
    
    errno was not reported correctly after attempting to clone a file,
    leading to incorrect error reports.  While scanning through the code, I
    have not noticed any similar mistakes.
    
    Error introduced in 3a769d8.
    
    Author: Justin Pryzby
    Discussion: https://postgr.es/m/20220731134135.GY15006@telsasoft.com
    Backpatch-through: 12


src/bin/pg_upgrade/file.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bin/pg_upgrade/file.c b/src/bin/pg_upgrade/file.c index c2ca99dcd86..079fbda8389 100644 --- a/src/bin/pg_upgrade/file.c +++ b/src/bin/pg_upgrade/file.c @@ -57,9 +57,12 @@ cloneFile(const char *src, const char *dst, if (ioctl(dest_fd, FICLONE, src_fd) < 0) { + int save_errno = errno; + unlink(dst); + pg_fatal("error while cloning relation \"%s.%s\" (\"%s\" to \"%s\"): %s", - schemaName, relName, src, dst, strerror(errno)); + schemaName, relName, src, dst, strerror(save_errno)); } close(src_fd); [parent: 2827f108d136]