mirror of
https://github.com/postgres/postgres.git
synced 2025-12-19 17:02:53 +03:00
Buffer manager modifications to keep a local buffer-dirtied bit as well
as a shared dirtybit for each shared buffer. The shared dirtybit still controls writing the buffer, but the local bit controls whether we need to fsync the buffer's file. This arrangement fixes a bug that allowed some required fsyncs to be missed, and should improve performance as well. For more info see my post of same date on pghackers.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: smgr.h,v 1.17 2000/01/26 05:58:33 momjian Exp $
|
||||
* $Id: smgr.h,v 1.18 2000/04/09 04:43:18 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -29,17 +29,23 @@ extern int smgrunlink(int16 which, Relation reln);
|
||||
extern int smgrextend(int16 which, Relation reln, char *buffer);
|
||||
extern int smgropen(int16 which, Relation reln);
|
||||
extern int smgrclose(int16 which, Relation reln);
|
||||
extern int smgrread(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrwrite(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrflush(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrblindwrt(int16 which, char *dbname, char *relname, Oid dbid,
|
||||
Oid relid, BlockNumber blkno, char *buffer);
|
||||
extern int smgrread(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrwrite(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrflush(int16 which, Relation reln, BlockNumber blocknum,
|
||||
char *buffer);
|
||||
extern int smgrblindwrt(int16 which, char *dbname, char *relname,
|
||||
Oid dbid, Oid relid,
|
||||
BlockNumber blkno, char *buffer);
|
||||
extern int smgrmarkdirty(int16 which, Relation reln, BlockNumber blkno);
|
||||
extern int smgrblindmarkdirty(int16 which, char *dbname, char *relname,
|
||||
Oid dbid, Oid relid,
|
||||
BlockNumber blkno);
|
||||
extern int smgrnblocks(int16 which, Relation reln);
|
||||
extern int smgrtruncate(int16 which, Relation reln, int nblocks);
|
||||
extern int smgrcommit(void);
|
||||
extern int smgrabort(void);
|
||||
|
||||
|
||||
|
||||
@@ -55,8 +61,11 @@ extern int mdclose(Relation reln);
|
||||
extern int mdread(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mdwrite(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mdflush(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mdblindwrt(char *dbstr, char *relstr, Oid dbid, Oid relid,
|
||||
BlockNumber blkno, char *buffer);
|
||||
extern int mdblindwrt(char *dbname, char *relname, Oid dbid, Oid relid,
|
||||
BlockNumber blkno, char *buffer);
|
||||
extern int mdmarkdirty(Relation reln, BlockNumber blkno);
|
||||
extern int mdblindmarkdirty(char *dbname, char *relname, Oid dbid, Oid relid,
|
||||
BlockNumber blkno);
|
||||
extern int mdnblocks(Relation reln);
|
||||
extern int mdtruncate(Relation reln, int nblocks);
|
||||
extern int mdcommit(void);
|
||||
@@ -66,7 +75,6 @@ extern int mdabort(void);
|
||||
extern SPINLOCK MMCacheLock;
|
||||
|
||||
extern int mminit(void);
|
||||
extern int mmshutdown(void);
|
||||
extern int mmcreate(Relation reln);
|
||||
extern int mmunlink(Relation reln);
|
||||
extern int mmextend(Relation reln, char *buffer);
|
||||
@@ -75,11 +83,17 @@ extern int mmclose(Relation reln);
|
||||
extern int mmread(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mmwrite(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mmflush(Relation reln, BlockNumber blocknum, char *buffer);
|
||||
extern int mmblindwrt(char *dbstr, char *relstr, Oid dbid, Oid relid,
|
||||
BlockNumber blkno, char *buffer);
|
||||
extern int mmblindwrt(char *dbname, char *relname, Oid dbid, Oid relid,
|
||||
BlockNumber blkno, char *buffer);
|
||||
extern int mmmarkdirty(Relation reln, BlockNumber blkno);
|
||||
extern int mmblindmarkdirty(char *dbname, char *relname, Oid dbid, Oid relid,
|
||||
BlockNumber blkno);
|
||||
extern int mmnblocks(Relation reln);
|
||||
extern int mmtruncate(Relation reln, int nblocks);
|
||||
extern int mmcommit(void);
|
||||
extern int mmabort(void);
|
||||
|
||||
extern int mmshutdown(void);
|
||||
extern int MMShmemSize(void);
|
||||
|
||||
/* smgrtype.c */
|
||||
|
||||
Reference in New Issue
Block a user