mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Provide PrefetchSharedBuffer(), a variant that takes SMgrRelation, for use in recovery. Rename LocalPrefetchBuffer() to PrefetchLocalBuffer() for consistency. Add a return value to all of these. In recovery, tolerate and report missing files, so we can handle relations unlinked before crash recovery began. Also report cache hits and misses, so that callers can do faster buffer lookups and better I/O accounting. Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com> Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/CA%2BhUKGJ4VJN8ttxScUFM8dOKX0BrBiboo5uz1cq%3DAovOddfHpA%40mail.gmail.com
53 lines
2.0 KiB
C
53 lines
2.0 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* md.h
|
|
* magnetic disk storage manager public interface declarations.
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/storage/md.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef MD_H
|
|
#define MD_H
|
|
|
|
#include "storage/block.h"
|
|
#include "storage/relfilenode.h"
|
|
#include "storage/smgr.h"
|
|
#include "storage/sync.h"
|
|
|
|
/* md storage manager functionality */
|
|
extern void mdinit(void);
|
|
extern void mdopen(SMgrRelation reln);
|
|
extern void mdclose(SMgrRelation reln, ForkNumber forknum);
|
|
extern void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
|
|
extern bool mdexists(SMgrRelation reln, ForkNumber forknum);
|
|
extern void mdunlink(RelFileNodeBackend rnode, ForkNumber forknum, bool isRedo);
|
|
extern void mdextend(SMgrRelation reln, ForkNumber forknum,
|
|
BlockNumber blocknum, char *buffer, bool skipFsync);
|
|
extern bool mdprefetch(SMgrRelation reln, ForkNumber forknum,
|
|
BlockNumber blocknum);
|
|
extern void mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
|
|
char *buffer);
|
|
extern void mdwrite(SMgrRelation reln, ForkNumber forknum,
|
|
BlockNumber blocknum, char *buffer, bool skipFsync);
|
|
extern void mdwriteback(SMgrRelation reln, ForkNumber forknum,
|
|
BlockNumber blocknum, BlockNumber nblocks);
|
|
extern BlockNumber mdnblocks(SMgrRelation reln, ForkNumber forknum);
|
|
extern void mdtruncate(SMgrRelation reln, ForkNumber forknum,
|
|
BlockNumber nblocks);
|
|
extern void mdimmedsync(SMgrRelation reln, ForkNumber forknum);
|
|
|
|
extern void ForgetDatabaseSyncRequests(Oid dbid);
|
|
extern void DropRelationFiles(RelFileNode *delrels, int ndelrels, bool isRedo);
|
|
|
|
/* md sync callbacks */
|
|
extern int mdsyncfiletag(const FileTag *ftag, char *path);
|
|
extern int mdunlinkfiletag(const FileTag *ftag, char *path);
|
|
extern bool mdfiletagmatches(const FileTag *ftag, const FileTag *candidate);
|
|
|
|
#endif /* MD_H */
|