1 /*------------------------------------------------------------------------- 2 * 3 * md.h 4 * magnetic disk storage manager public interface declarations. 5 * 6 * 7 * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/storage/md.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef MD_H 15 #define MD_H 16 17 #include "storage/block.h" 18 #include "storage/relfilenode.h" 19 #include "storage/smgr.h" 20 #include "storage/sync.h" 21 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(RelFileNodeBackend rnode, ForkNumber forknum, bool isRedo); 29 extern void mdextend(SMgrRelation reln, ForkNumber forknum, 30 BlockNumber blocknum, char *buffer, bool skipFsync); 31 extern bool mdprefetch(SMgrRelation reln, ForkNumber forknum, 32 BlockNumber blocknum); 33 extern void mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, 34 char *buffer); 35 extern void mdwrite(SMgrRelation reln, ForkNumber forknum, 36 BlockNumber blocknum, char *buffer, bool skipFsync); 37 extern void mdwriteback(SMgrRelation reln, ForkNumber forknum, 38 BlockNumber blocknum, BlockNumber nblocks); 39 extern BlockNumber mdnblocks(SMgrRelation reln, ForkNumber forknum); 40 extern void mdtruncate(SMgrRelation reln, ForkNumber forknum, 41 BlockNumber nblocks); 42 extern void mdimmedsync(SMgrRelation reln, ForkNumber forknum); 43 44 extern void ForgetDatabaseSyncRequests(Oid dbid); 45 extern void DropRelationFiles(RelFileNode *delrels, int ndelrels, bool isRedo); 46 47 /* md sync callbacks */ 48 extern int mdsyncfiletag(const FileTag *ftag, char *path); 49 extern int mdunlinkfiletag(const FileTag *ftag, char *path); 50 extern bool mdfiletagmatches(const FileTag *ftag, const FileTag *candidate); 51 52 #endif /* MD_H */ 53