From 4ab8c81bd90ae442dbd092df04a12dbb7e68f562 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Thu, 27 Oct 2022 14:39:42 +0900 Subject: Move pg_pwritev_with_retry() to src/common/file_utils.c This commit moves pg_pwritev_with_retry(), a convenience wrapper of pg_writev() able to handle partial writes, to common/file_utils.c so that the frontend code is able to use it. A first use-case targetted for this routine is pg_basebackup and pg_receivewal, for the zero-padding of a newly-initialized WAL segment. This is used currently in the backend when the GUC wal_init_zero is enabled (default). Author: Bharath Rupireddy Reviewed-by: Nathan Bossart, Thomas Munro Discussion: https://postgr.es/m/CALj2ACUq7nAb7=bJNbK3yYmp-SZhJcXFR_pLk8un6XgDzDF3OA@mail.gmail.com --- src/include/common/file_utils.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/include/common/file_utils.h') diff --git a/src/include/common/file_utils.h b/src/include/common/file_utils.h index 2811744c12f..2c5dbcb0b1e 100644 --- a/src/include/common/file_utils.h +++ b/src/include/common/file_utils.h @@ -24,6 +24,8 @@ typedef enum PGFileType PGFILETYPE_LNK } PGFileType; +struct iovec; /* avoid including port/pg_iovec.h here */ + #ifdef FRONTEND extern int fsync_fname(const char *fname, bool isdir); extern void fsync_pgdata(const char *pg_data, int serverVersion); @@ -37,4 +39,9 @@ extern PGFileType get_dirent_type(const char *path, bool look_through_symlinks, int elevel); +extern ssize_t pg_pwritev_with_retry(int fd, + const struct iovec *iov, + int iovcnt, + off_t offset); + #endif /* FILE_UTILS_H */ -- cgit v1.2.3