diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index 601efa089d0e187fda896d9113545f45bb28dd2c..b30fcba726c43d66bbcbdcf43f3902aac4d91f54 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -1167,6 +1167,7 @@ heap_xlog_logical_rewrite(XLogReaderState *r) len = xlrec->num_mappings * sizeof(LogicalRewriteMappingData); /* write out tail end of mapping file (again) */ + errno = 0; pgstat_report_wait_start(WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE); if (write(fd, data, len) != len) { diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 1482fb4c958919ca12f185456fe9a39d48dc2f76..29ae6b4ba948b7f0d3c3a72048a4174040ae7d0a 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -1599,6 +1599,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len) path))); /* Write content and CRC */ + errno = 0; pgstat_report_wait_start(WAIT_EVENT_TWOPHASE_FILE_WRITE); if (write(fd, content, len) != len) { diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index f911b651493b2858aba07988b32223c8948f57d2..c554b05e1a0c4604023dd18f1938d2b7d284776e 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -577,6 +577,7 @@ CheckPointReplicationOrigin(void) tmppath))); /* write magic */ + errno = 0; if ((write(tmpfd, &magic, sizeof(magic))) != sizeof(magic)) { int save_errno = errno; @@ -620,6 +621,7 @@ CheckPointReplicationOrigin(void) /* make sure we only write out a commit that's persistent */ XLogFlush(local_lsn); + errno = 0; if ((write(tmpfd, &disk_state, sizeof(disk_state))) != sizeof(disk_state)) { @@ -642,6 +644,7 @@ CheckPointReplicationOrigin(void) /* write out the CRC */ FIN_CRC32C(crc); + errno = 0; if ((write(tmpfd, &crc, sizeof(crc))) != sizeof(crc)) { int save_errno = errno; diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 69ae504d78ceb984066c5f0e2cd1dc2e16dc1038..c2c4dee7808242bcaeb7095b6e97a928a51bca9f 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -2426,6 +2426,7 @@ ReorderBufferSerializeChange(ReorderBuffer *rb, ReorderBufferTXN *txn, ondisk->size = sz; + errno = 0; pgstat_report_wait_start(WAIT_EVENT_REORDER_BUFFER_WRITE); if (write(fd, rb->outbuf, ondisk->size) != ondisk->size) { diff --git a/src/backend/replication/logical/snapbuild.c b/src/backend/replication/logical/snapbuild.c index b68682a37ffe253a584e9ed70c45a32278169cd7..8549cd506dfae2db870d688bcde809871c74fc33 100644 --- a/src/backend/replication/logical/snapbuild.c +++ b/src/backend/replication/logical/snapbuild.c @@ -1610,6 +1610,7 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn) ereport(ERROR, (errmsg("could not open file \"%s\": %m", path))); + errno = 0; pgstat_report_wait_start(WAIT_EVENT_SNAPBUILD_WRITE); if ((write(fd, ondisk, needed_length)) != needed_length) { diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c index bb9a24ec08dc15f9719dccfb816088a180881afc..17e00c4d5c68b0748e0c71eecd0c29f88abe654e 100644 --- a/src/backend/replication/slot.c +++ b/src/backend/replication/slot.c @@ -1269,6 +1269,7 @@ SaveSlotToPath(ReplicationSlot *slot, const char *dir, int elevel) SnapBuildOnDiskChecksummedSize); FIN_CRC32C(cp.checksum); + errno = 0; pgstat_report_wait_start(WAIT_EVENT_REPLICATION_SLOT_WRITE); if ((write(fd, &cp, sizeof(cp))) != sizeof(cp)) { diff --git a/src/bin/pg_basebackup/walmethods.c b/src/bin/pg_basebackup/walmethods.c index 82cbf8700253eae3a46f599a22877b696e3667cc..870b6d085e813045a2a18abd753226c2be30eac5 100644 --- a/src/bin/pg_basebackup/walmethods.c +++ b/src/bin/pg_basebackup/walmethods.c @@ -121,6 +121,7 @@ dir_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_ zerobuf = pg_malloc0(XLOG_BLCKSZ); for (bytes = 0; bytes < pad_to_size; bytes += XLOG_BLCKSZ) { + errno = 0; if (write(fd, zerobuf, XLOG_BLCKSZ) != XLOG_BLCKSZ) { int save_errno = errno; @@ -444,6 +445,7 @@ tar_write_compressed_data(void *buf, size_t count, bool flush) { size_t len = ZLIB_OUT_SIZE - tar_data->zp->avail_out; + errno = 0; if (write(tar_data->fd, tar_data->zlibOut, len) != len) { /* @@ -627,6 +629,7 @@ tar_open_for_write(const char *pathname, const char *temp_suffix, size_t pad_to_ if (!tar_data->compression) { + errno = 0; if (write(tar_data->fd, tar_data->currentfile->header, 512) != 512) { save_errno = errno; @@ -827,6 +830,7 @@ tar_close(Walfile f, WalCloseMethod method) return -1; if (!tar_data->compression) { + errno = 0; if (write(tar_data->fd, tf->header, 512) != 512) { /* if write didn't set errno, assume problem is no disk space */ @@ -899,6 +903,7 @@ tar_finish(void) MemSet(zerobuf, 0, sizeof(zerobuf)); if (!tar_data->compression) { + errno = 0; if (write(tar_data->fd, zerobuf, sizeof(zerobuf)) != sizeof(zerobuf)) { /* if write didn't set errno, assume problem is no disk space */ @@ -931,6 +936,7 @@ tar_finish(void) { size_t len = ZLIB_OUT_SIZE - tar_data->zp->avail_out; + errno = 0; if (write(tar_data->fd, tar_data->zlibOut, len) != len) { /*