1 /*------------------------------------------------------------------------- 2 * 3 * md.h 4 * magnetic disk storage manager public interface declarations. 5 * 6 * 7 * Portions Copyright (c) 1996-2019, 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 mdclose(SMgrRelation reln, ForkNumber forknum); 25 extern void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo); 26 extern bool mdexists(SMgrRelation reln, ForkNumber forknum); 27 extern void mdunlink(RelFileNodeBackend rnode, ForkNumber forknum, bool isRedo); 28 extern void mdextend(SMgrRelation reln, ForkNumber forknum, 29 BlockNumber blocknum, char *buffer, bool skipFsync); 30 extern void mdprefetch(SMgrRelation reln, ForkNumber forknum, 31 BlockNumber blocknum); 32 extern void mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, 33 char *buffer); 34 extern void mdwrite(SMgrRelation reln, ForkNumber forknum, 35 BlockNumber blocknum, char *buffer, bool skipFsync); 36 extern void mdwriteback(SMgrRelation reln, ForkNumber forknum, 37 BlockNumber blocknum, BlockNumber nblocks); 38 extern BlockNumber mdnblocks(SMgrRelation reln, ForkNumber forknum); 39 extern void mdtruncate(SMgrRelation reln, ForkNumber forknum, 40 BlockNumber nblocks); 41 extern void mdimmedsync(SMgrRelation reln, ForkNumber forknum); 42 43 extern void ForgetDatabaseSyncRequests(Oid dbid); 44 extern void DropRelationFiles(RelFileNode *delrels, int ndelrels, bool isRedo); 45 46 /* md sync callbacks */ 47 extern int mdsyncfiletag(const FileTag *ftag, char *path); 48 extern int mdunlinkfiletag(const FileTag *ftag, char *path); 49 extern bool mdfiletagmatches(const FileTag *ftag, const FileTag *candidate); 50 51 #endif /* MD_H */ 52