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-2020, 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 
16 #include "storage/relfilenode.h"
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  */
23 typedef 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  */
35 typedef enum SyncRequestHandler
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  */
50 typedef struct FileTag
51 {
52  int16 handler; /* SyncRequestHandler value, saving space */
53  int16 forknum; /* ForkNumber, saving space */
56 } FileTag;
57 
58 extern void InitSync(void);
59 extern void SyncPreCheckpoint(void);
60 extern void SyncPostCheckpoint(void);
61 extern void ProcessSyncRequests(void);
62 extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type);
63 extern void EnableSyncRequestForwarding(void);
64 extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
65  bool retryOnError);
66 
67 #endif /* SYNC_H */
uint32 segno
Definition: sync.h:55
signed short int16
Definition: c.h:416
void InitSync(void)
Definition: sync.c:128
SyncRequestHandler
Definition: sync.h:35
void SyncPreCheckpoint(void)
Definition: sync.c:181
int16 forknum
Definition: sync.h:53
void ProcessSyncRequests(void)
Definition: sync.c:258
RelFileNode rnode
Definition: sync.h:54
struct FileTag FileTag
unsigned int uint32
Definition: c.h:429
void EnableSyncRequestForwarding(void)
Definition: sync.c:601
void RememberSyncRequest(const FileTag *ftag, SyncRequestType type)
Definition: sync.c:459
void SyncPostCheckpoint(void)
Definition: sync.c:196
SyncRequestType
Definition: sync.h:23
int16 handler
Definition: sync.h:52
bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError)
Definition: sync.c:554
Definition: sync.h:50