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-2019, 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 {
37  SYNC_HANDLER_MD = 0 /* md smgr */
39 
40 /*
41  * A tag identifying a file. Currently it has the members required for md.c's
42  * usage, but sync.c has no knowledge of the internal structure, and it is
43  * liable to change as required by future handlers.
44  */
45 typedef struct FileTag
46 {
47  int16 handler; /* SyncRequestHandler value, saving space */
48  int16 forknum; /* ForkNumber, saving space */
51 } FileTag;
52 
53 extern void InitSync(void);
54 extern void SyncPreCheckpoint(void);
55 extern void SyncPostCheckpoint(void);
56 extern void ProcessSyncRequests(void);
57 extern void RememberSyncRequest(const FileTag *ftag, SyncRequestType type);
58 extern void EnableSyncRequestForwarding(void);
59 extern bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
60  bool retryOnError);
61 
62 #endif /* SYNC_H */
uint32 segno
Definition: sync.h:50
signed short int16
Definition: c.h:346
void InitSync(void)
Definition: sync.c:106
SyncRequestHandler
Definition: sync.h:35
void SyncPreCheckpoint(void)
Definition: sync.c:159
int16 forknum
Definition: sync.h:48
void ProcessSyncRequests(void)
Definition: sync.c:236
RelFileNode rnode
Definition: sync.h:49
struct FileTag FileTag
unsigned int uint32
Definition: c.h:359
void EnableSyncRequestForwarding(void)
Definition: sync.c:577
void RememberSyncRequest(const FileTag *ftag, SyncRequestType type)
Definition: sync.c:435
void SyncPostCheckpoint(void)
Definition: sync.c:174
SyncRequestType
Definition: sync.h:23
int16 handler
Definition: sync.h:47
bool RegisterSyncRequest(const FileTag *ftag, SyncRequestType type, bool retryOnError)
Definition: sync.c:530
Definition: sync.h:45