diff options
author | Robert Haas <rhaas@postgresql.org> | 2012-06-26 06:40:58 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2012-06-26 06:47:25 -0400 |
commit | 5cea1b0a8cfa25bdd31dcc1498e815b8aa72c49d (patch) | |
tree | a5566de5806a7d3f714c6154b1a1bfc07c064bd3 /src/backend/storage/smgr/md.c | |
parent | 248f1ac813e7a5fd83816b1d85a3d4a14e7574a2 (diff) |
Backport fsync queue compaction logic to all supported branches.
This backports commit 7f242d880b5b5d9642675517466d31373961cf98,
except for the counter in pg_stat_bgwriter. The underlying problem
(namely, that a full fsync request queue causes terrible checkpoint
behavior) continues to be reported in the wild, and this code seems
to be safe and robust enough to risk back-porting the fix.
Diffstat (limited to 'src/backend/storage/smgr/md.c')
-rw-r--r-- | src/backend/storage/smgr/md.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index e69c7d3bb8a..78feae112b1 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -33,7 +33,13 @@ /* interval for calling AbsorbFsyncRequests in mdsync */ #define FSYNCS_PER_ABSORB 10 -/* special values for the segno arg to RememberFsyncRequest */ +/* + * Special values for the segno arg to RememberFsyncRequest. + * + * Note that CompactBgwriterRequestQueue assumes that it's OK to remove an + * fsync request from the queue if an identical, subsequent request is found. + * See comments there before making changes here. + */ #define FORGET_RELATION_FSYNC (InvalidBlockNumber) #define FORGET_DATABASE_FSYNC (InvalidBlockNumber-1) #define UNLINK_RELATION_REQUEST (InvalidBlockNumber-2) |