PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
file_utils.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * Assorted utility functions to work on files.
4 *
5 *
6 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * src/include/common/file_utils.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef FILE_UTILS_H
14#define FILE_UTILS_H
15
16#include <dirent.h>
17
18typedef enum PGFileType
19{
26
28{
32
33struct iovec; /* avoid including port/pg_iovec.h here */
34
35#ifdef FRONTEND
36extern int pre_sync_fname(const char *fname, bool isdir);
37extern int fsync_fname(const char *fname, bool isdir);
38extern void sync_pgdata(const char *pg_data, int serverVersion,
40extern void sync_dir_recurse(const char *dir, DataDirSyncMethod sync_method);
41extern int durable_rename(const char *oldfile, const char *newfile);
42extern int fsync_parent_path(const char *fname);
43#endif
44
45extern PGFileType get_dirent_type(const char *path,
46 const struct dirent *de,
47 bool look_through_symlinks,
48 int elevel);
49
50extern int compute_remaining_iovec(struct iovec *destination,
51 const struct iovec *source,
52 int iovcnt,
53 size_t transferred);
54
55extern ssize_t pg_pwritev_with_retry(int fd,
56 const struct iovec *iov,
57 int iovcnt,
58 off_t offset);
59
60extern ssize_t pg_pwrite_zeros(int fd, size_t size, off_t offset);
61
62/* Filename components */
63#define PG_TEMP_FILES_DIR "pgsql_tmp"
64#define PG_TEMP_FILE_PREFIX "pgsql_tmp"
65
66#endif /* FILE_UTILS_H */
int durable_rename(const char *oldfile, const char *newfile, int elevel)
Definition: fd.c:782
void fsync_fname(const char *fname, bool isdir)
Definition: fd.c:756
static int fsync_parent_path(const char *fname, int elevel)
Definition: fd.c:3938
int compute_remaining_iovec(struct iovec *destination, const struct iovec *source, int iovcnt, size_t transferred)
Definition: file_utils.c:614
PGFileType
Definition: file_utils.h:19
@ PGFILETYPE_LNK
Definition: file_utils.h:24
@ PGFILETYPE_UNKNOWN
Definition: file_utils.h:21
@ PGFILETYPE_DIR
Definition: file_utils.h:23
@ PGFILETYPE_REG
Definition: file_utils.h:22
@ PGFILETYPE_ERROR
Definition: file_utils.h:20
ssize_t pg_pwrite_zeros(int fd, size_t size, off_t offset)
Definition: file_utils.c:709
DataDirSyncMethod
Definition: file_utils.h:28
@ DATA_DIR_SYNC_METHOD_SYNCFS
Definition: file_utils.h:30
@ DATA_DIR_SYNC_METHOD_FSYNC
Definition: file_utils.h:29
ssize_t pg_pwritev_with_retry(int fd, const struct iovec *iov, int iovcnt, off_t offset)
Definition: file_utils.c:659
PGFileType get_dirent_type(const char *path, const struct dirent *de, bool look_through_symlinks, int elevel)
Definition: file_utils.c:547
static bool sync_data_files
Definition: initdb.c:171
static char * pg_data
Definition: initdb.c:138
static DataDirSyncMethod sync_method
Definition: initdb.c:170
static rewind_source * source
Definition: pg_rewind.c:89
static int fd(const char *x, int i)
Definition: preproc-init.c:105
Definition: dirent.h:10