PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
md.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * md.h
4 * magnetic disk storage manager public interface declarations.
5 *
6 *
7 * Portions Copyright (c) 1996-2025, 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/aio_types.h"
18#include "storage/block.h"
20#include "storage/smgr.h"
21#include "storage/sync.h"
22
24
25/* md storage manager functionality */
26extern void mdinit(void);
27extern void mdopen(SMgrRelation reln);
28extern void mdclose(SMgrRelation reln, ForkNumber forknum);
29extern void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
30extern bool mdexists(SMgrRelation reln, ForkNumber forknum);
31extern void mdunlink(RelFileLocatorBackend rlocator, ForkNumber forknum, bool isRedo);
32extern void mdextend(SMgrRelation reln, ForkNumber forknum,
33 BlockNumber blocknum, const void *buffer, bool skipFsync);
34extern void mdzeroextend(SMgrRelation reln, ForkNumber forknum,
35 BlockNumber blocknum, int nblocks, bool skipFsync);
36extern bool mdprefetch(SMgrRelation reln, ForkNumber forknum,
37 BlockNumber blocknum, int nblocks);
38extern uint32 mdmaxcombine(SMgrRelation reln, ForkNumber forknum,
39 BlockNumber blocknum);
40extern void mdreadv(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
41 void **buffers, BlockNumber nblocks);
42extern void mdstartreadv(PgAioHandle *ioh,
43 SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
44 void **buffers, BlockNumber nblocks);
45extern void mdwritev(SMgrRelation reln, ForkNumber forknum,
46 BlockNumber blocknum,
47 const void **buffers, BlockNumber nblocks, bool skipFsync);
48extern void mdwriteback(SMgrRelation reln, ForkNumber forknum,
49 BlockNumber blocknum, BlockNumber nblocks);
50extern BlockNumber mdnblocks(SMgrRelation reln, ForkNumber forknum);
51extern void mdtruncate(SMgrRelation reln, ForkNumber forknum,
52 BlockNumber curnblk, BlockNumber nblocks);
53extern void mdimmedsync(SMgrRelation reln, ForkNumber forknum);
54extern void mdregistersync(SMgrRelation reln, ForkNumber forknum);
55extern int mdfd(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, uint32 *off);
56
57extern void ForgetDatabaseSyncRequests(Oid dbid);
58extern void DropRelationFiles(RelFileLocator *delrels, int ndelrels, bool isRedo);
59
60/* md sync callbacks */
61extern int mdsyncfiletag(const FileTag *ftag, char *path);
62extern int mdunlinkfiletag(const FileTag *ftag, char *path);
63extern bool mdfiletagmatches(const FileTag *ftag, const FileTag *candidate);
64
65#endif /* MD_H */
uint32 BlockNumber
Definition: block.h:31
#define PGDLLIMPORT
Definition: c.h:1291
uint32_t uint32
Definition: c.h:502
void mdunlink(RelFileLocatorBackend rlocator, ForkNumber forknum, bool isRedo)
Definition: md.c:327
void mdtruncate(SMgrRelation reln, ForkNumber forknum, BlockNumber curnblk, BlockNumber nblocks)
Definition: md.c:1277
void mdwritev(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, const void **buffers, BlockNumber nblocks, bool skipFsync)
Definition: md.c:1049
bool mdfiletagmatches(const FileTag *ftag, const FileTag *candidate)
Definition: md.c:1950
bool mdexists(SMgrRelation reln, ForkNumber forknum)
Definition: md.c:193
void mdreadv(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, void **buffers, BlockNumber nblocks)
Definition: md.c:837
BlockNumber mdnblocks(SMgrRelation reln, ForkNumber forknum)
Definition: md.c:1213
PGDLLIMPORT const PgAioHandleCallbacks aio_md_readv_cb
Definition: md.c:159
int mdunlinkfiletag(const FileTag *ftag, char *path)
Definition: md.c:1932
void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo)
Definition: md.c:212
int mdfd(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, uint32 *off)
Definition: md.c:1470
void mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, const void *buffer, bool skipFsync)
Definition: md.c:477
void mdinit(void)
Definition: md.c:180
void mdclose(SMgrRelation reln, ForkNumber forknum)
Definition: md.c:703
void mdzeroextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, int nblocks, bool skipFsync)
Definition: md.c:542
int mdsyncfiletag(const FileTag *ftag, char *path)
Definition: md.c:1880
void mdwriteback(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, BlockNumber nblocks)
Definition: md.c:1154
uint32 mdmaxcombine(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum)
Definition: md.c:823
void mdstartreadv(PgAioHandle *ioh, SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, void **buffers, BlockNumber nblocks)
Definition: md.c:975
bool mdprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, int nblocks)
Definition: md.c:726
void mdregistersync(SMgrRelation reln, ForkNumber forknum)
Definition: md.c:1366
void mdopen(SMgrRelation reln)
Definition: md.c:692
void DropRelationFiles(RelFileLocator *delrels, int ndelrels, bool isRedo)
Definition: md.c:1587
void ForgetDatabaseSyncRequests(Oid dbid)
Definition: md.c:1569
void mdimmedsync(SMgrRelation reln, ForkNumber forknum)
Definition: md.c:1417
unsigned int Oid
Definition: postgres_ext.h:30
ForkNumber
Definition: relpath.h:56
Definition: sync.h:51