*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.154 2004/01/30 15:57:03 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.155 2004/02/04 01:24:53 wieck Exp $
*
*-------------------------------------------------------------------------
*/
#include "storage/proc.h"
#include "storage/smgr.h"
#include "utils/relcache.h"
-#include "utils/guc.h"
#include "pgstat.h"
/* GUC variable */
bool zero_damaged_pages = false;
-#define BGWRITER_FLUSH_NONE 0
-#define BGWRITER_FLUSH_NONE_STR "none"
-#define BGWRITER_FLUSH_SYNC 1
-#define BGWRITER_FLUSH_SYNC_STR "sync"
-
-#define BGWRITER_FLUSH_DEFAULT BGWRITER_FLUSH_NONE
-#define BGWRITER_FLUSH_DEFAULT_STR BGWRITER_FLUSH_NONE_STR
-
int BgWriterDelay = 200;
int BgWriterPercent = 1;
int BgWriterMaxpages = 100;
-int BgWriterFlushMethod = BGWRITER_FLUSH_NONE;
-char *BgWriterFlushMethod_str = NULL;
-const char BgWriterFlushMethod_default[] = BGWRITER_FLUSH_DEFAULT_STR;
-
-const char *BgWriterAssignSyncMethod(const char *method,
- bool doit, GucSource source);
static void WaitIO(BufferDesc *buf);
static void StartBufferIO(BufferDesc *buf, bool forInput);
if (InterruptPending)
return;
- /*
- * Perform the configured buffer flush method
- */
- switch (BgWriterFlushMethod)
- {
- case BGWRITER_FLUSH_NONE:
- break;
-
- case BGWRITER_FLUSH_SYNC:
- smgrsync();
- break;
- }
-
/*
* Nap for the configured time or sleep for 10 seconds if
* there was nothing to do at all.
}
}
-const char *
-BgWriterAssignSyncMethod(const char *method, bool doit, GucSource source)
-{
- int new_flush_method;
-
- if (strcasecmp(method, BGWRITER_FLUSH_NONE_STR) == 0)
- new_flush_method = BGWRITER_FLUSH_NONE;
- else
- if (strcasecmp(method, BGWRITER_FLUSH_SYNC_STR) == 0)
- new_flush_method = BGWRITER_FLUSH_SYNC;
- else
- return NULL;
-
- if (!doit)
- return method;
-
- BgWriterFlushMethod = new_flush_method;
- return method;
-}
-
-
/*
* Do whatever is needed to prepare for commit at the bufmgr and smgr levels
*/
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.184 2004/02/03 17:34:03 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.185 2004/02/04 01:24:53 wieck Exp $
*
*--------------------------------------------------------------------
*/
static const char *assign_log_error_verbosity(const char *newval, bool doit,
GucSource source);
static bool assign_phony_autocommit(bool newval, bool doit, GucSource source);
-extern const char *BgWriterAssignSyncMethod(const char *method,
- bool doit, GucSource source);
/*
XLOG_sync_method_default, assign_xlog_sync_method, NULL
},
- {
- {"bgwriter_flush_method", PGC_SIGHUP, RESOURCES,
- gettext_noop("Selects the method used by the bgwriter for forcing writes out to disk."),
- NULL
- },
- &BgWriterFlushMethod_str,
- BgWriterFlushMethod_default, BgWriterAssignSyncMethod, NULL
- },
-
/* End-of-list marker */
{
{NULL, 0, 0, NULL, NULL}, NULL, NULL, NULL, NULL
#debug_shared_buffers = 0 # 0-600 seconds
# - Background writer -
-#debug_shared_buffers = 0 # 0-600 seconds interval (0 = off)
#bgwriter_delay = 200 # 10-5000 milliseconds
#bgwriter_percent = 1 # 0-100% of dirty buffers
#bgwriter_maxpages = 100 # 1-1000 buffers max at once
-#bgwriter_flush_method = none # how the bgwriter flushes kernel buffers
- # one of: none or sync
# - Free Space Map -
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.74 2004/01/24 20:00:46 wieck Exp $
+ * $PostgreSQL: pgsql/src/include/storage/bufmgr.h,v 1.75 2004/02/04 01:24:53 wieck Exp $
*
*-------------------------------------------------------------------------
*/
extern int BgWriterDelay;
extern int BgWriterPercent;
extern int BgWriterMaxpages;
-extern char *BgWriterFlushMethod_str;
-extern const char BgWriterFlushMethod_default[];
/* in buf_init.c */
extern void BufmgrCommit(void);
extern int BufferSync(int percent, int maxpages);
extern void BufferBackgroundWriter(void);
+extern const char *BgWriterAssignSyncMethod(const char *method,
+ bool doid, bool interactive);
extern void InitLocalBuffer(void);