aboutsummaryrefslogtreecommitdiff
path: root/src/backend/storage/buffer/bufmgr.c
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2013-04-07 22:37:39 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2013-04-07 22:37:39 +0100
commit1be203519ac4da238bf6dfe8f7015d5780723e0f (patch)
tree3c95d3930e638b11ab8a71f0f5180be3a512093a /src/backend/storage/buffer/bufmgr.c
parentcf8dc9e10c0d954970cbe5ca9be4c6b881cde482 (diff)
downloadpostgresql-1be203519ac4da238bf6dfe8f7015d5780723e0f.tar.gz
postgresql-1be203519ac4da238bf6dfe8f7015d5780723e0f.zip
Tune BufferGetLSNAtomic() when checksums !enabled
From performance analysis by Heikki Linnakangas
Diffstat (limited to 'src/backend/storage/buffer/bufmgr.c')
-rw-r--r--src/backend/storage/buffer/bufmgr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 1cd0ac806a7..c2ef53f4617 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2079,8 +2079,10 @@ BufferGetLSNAtomic(Buffer buffer)
char *page = BufferGetPage(buffer);
XLogRecPtr lsn;
- /* Local buffers don't need a lock. */
- if (BufferIsLocal(buffer))
+ /*
+ * If we don't need locking for correctness, fastpath out.
+ */
+ if (!DataChecksumsEnabled() || BufferIsLocal(buffer))
return PageGetLSN(page);
/* Make sure we've got a real buffer, and that we hold a pin on it. */