PostgreSQL Source Code git master
sync.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * sync.h
4 * File synchronization management code.
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/storage/sync.h
10 *
11 *-------------------------------------------------------------------------
12 */
13#ifndef SYNC_H
14#define SYNC_H
15
17
18/*
19 * Type of sync request. These are used to manage the set of pending
20 * requests to call a sync handler's sync or unlink functions at the next
21 * checkpoint.
22 */
23typedef enum SyncRequestType
24{
25 SYNC_REQUEST, /* schedule a call of sync function */
26 SYNC_UNLINK_REQUEST, /* schedule a call of unlink function */
27 SYNC_FORGET_REQUEST, /* forget all calls for a tag */
28 SYNC_FILTER_REQUEST, /* forget all calls satisfying match fn */
30
31/*
32 * Which set of functions to use to handle a given request. The values of
33 * the enumerators must match the indexes of the function table in sync.c.
34 */
36{
44
45/*
46 * A tag identifying a file. Currently it has the members required for md.c's
47 * usage, but sync.c has no knowledge of the internal structure, and it is
48 * liable to change as required by future handlers.
49 */
50typedef struct FileTag
51{
52 int16 handler; /* SyncRequestHandler value, saving space */
53 int16 forknum; /* ForkNumber, saving space */
57
58extern void InitSync(void);
59extern void SyncPreCheckpoint(void);
60extern void SyncPostCheckpoint(void);
61extern void ProcessSyncRequests(void);
62extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type);
63extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
64 bool retryOnError);
65
66#endif /* SYNC_H */
int16_t int16
Definition: c.h:483
uint64_t uint64
Definition: c.h:489
Definition: sync.h:51
RelFileLocator rlocator
Definition: sync.h:54
int16 forknum
Definition: sync.h:53
uint64 segno
Definition: sync.h:55
int16 handler
Definition: sync.h:52
void ProcessSyncRequests(void)
Definition: sync.c:286
void SyncPreCheckpoint(void)
Definition: sync.c:177
struct FileTag FileTag
void InitSync(void)
Definition: sync.c:124
void RememberSyncRequest(const FileTag *ftag, SyncRequestType type)
Definition: sync.c:487
SyncRequestHandler
Definition: sync.h:36
@ SYNC_HANDLER_MD
Definition: sync.h:37
@ SYNC_HANDLER_COMMIT_TS
Definition: sync.h:39
@ SYNC_HANDLER_MULTIXACT_MEMBER
Definition: sync.h:41
@ SYNC_HANDLER_CLOG
Definition: sync.h:38
@ SYNC_HANDLER_NONE
Definition: sync.h:42
@ SYNC_HANDLER_MULTIXACT_OFFSET
Definition: sync.h:40
SyncRequestType
Definition: sync.h:24
@ SYNC_FILTER_REQUEST
Definition: sync.h:28
@ SYNC_FORGET_REQUEST
Definition: sync.h:27
@ SYNC_UNLINK_REQUEST
Definition: sync.h:26
@ SYNC_REQUEST
Definition: sync.h:25
void SyncPostCheckpoint(void)
Definition: sync.c:202
bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError)
Definition: sync.c:580
const char * type