1 /*-------------------------------------------------------------------------
4 * magnetic disk storage manager public interface declarations.
7 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * src/include/storage/md.h
12 *-------------------------------------------------------------------------
17 #include "storage/block.h"
18 #include "storage/relfilelocator.h"
19 #include "storage/smgr.h"
20 #include "storage/sync.h"
22 /* md storage manager functionality */
23 extern void mdinit(void);
24 extern void mdopen(SMgrRelation reln
);
25 extern void mdclose(SMgrRelation reln
, ForkNumber forknum
);
26 extern void mdcreate(SMgrRelation reln
, ForkNumber forknum
, bool isRedo
);
27 extern bool mdexists(SMgrRelation reln
, ForkNumber forknum
);
28 extern void mdunlink(RelFileLocatorBackend rlocator
, ForkNumber forknum
, bool isRedo
);
29 extern void mdextend(SMgrRelation reln
, ForkNumber forknum
,
30 BlockNumber blocknum
, const void *buffer
, bool skipFsync
);
31 extern void mdzeroextend(SMgrRelation reln
, ForkNumber forknum
,
32 BlockNumber blocknum
, int nblocks
, bool skipFsync
);
33 extern bool mdprefetch(SMgrRelation reln
, ForkNumber forknum
,
34 BlockNumber blocknum
, int nblocks
);
35 extern uint32
mdmaxcombine(SMgrRelation reln
, ForkNumber forknum
,
36 BlockNumber blocknum
);
37 extern void mdreadv(SMgrRelation reln
, ForkNumber forknum
, BlockNumber blocknum
,
38 void **buffers
, BlockNumber nblocks
);
39 extern void mdwritev(SMgrRelation reln
, ForkNumber forknum
,
41 const void **buffers
, BlockNumber nblocks
, bool skipFsync
);
42 extern void mdwriteback(SMgrRelation reln
, ForkNumber forknum
,
43 BlockNumber blocknum
, BlockNumber nblocks
);
44 extern BlockNumber
mdnblocks(SMgrRelation reln
, ForkNumber forknum
);
45 extern void mdtruncate(SMgrRelation reln
, ForkNumber forknum
,
47 extern void mdimmedsync(SMgrRelation reln
, ForkNumber forknum
);
48 extern void mdregistersync(SMgrRelation reln
, ForkNumber forknum
);
50 extern void ForgetDatabaseSyncRequests(Oid dbid
);
51 extern void DropRelationFiles(RelFileLocator
*delrels
, int ndelrels
, bool isRedo
);
53 /* md sync callbacks */
54 extern int mdsyncfiletag(const FileTag
*ftag
, char *path
);
55 extern int mdunlinkfiletag(const FileTag
*ftag
, char *path
);
56 extern bool mdfiletagmatches(const FileTag
*ftag
, const FileTag
*candidate
);