aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/storage/buffer/bufmgr.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 0d8849bf894..ee83669992b 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2472,20 +2472,19 @@ BufferIsExclusiveLocked(Buffer buffer)
{
BufferDesc *bufHdr;
+ Assert(BufferIsPinned(buffer));
+
if (BufferIsLocal(buffer))
{
- int bufid = -buffer - 1;
-
- bufHdr = GetLocalBufferDescriptor(bufid);
+ /* Content locks are not maintained for local buffers. */
+ return true;
}
else
{
bufHdr = GetBufferDescriptor(buffer - 1);
+ return LWLockHeldByMeInMode(BufferDescriptorGetContentLock(bufHdr),
+ LW_EXCLUSIVE);
}
-
- Assert(BufferIsPinned(buffer));
- return LWLockHeldByMeInMode(BufferDescriptorGetContentLock(bufHdr),
- LW_EXCLUSIVE);
}
/*
@@ -2501,21 +2500,22 @@ BufferIsDirty(Buffer buffer)
{
BufferDesc *bufHdr;
+ Assert(BufferIsPinned(buffer));
+
if (BufferIsLocal(buffer))
{
int bufid = -buffer - 1;
bufHdr = GetLocalBufferDescriptor(bufid);
+ /* Content locks are not maintained for local buffers. */
}
else
{
bufHdr = GetBufferDescriptor(buffer - 1);
+ Assert(LWLockHeldByMeInMode(BufferDescriptorGetContentLock(bufHdr),
+ LW_EXCLUSIVE));
}
- Assert(BufferIsPinned(buffer));
- Assert(LWLockHeldByMeInMode(BufferDescriptorGetContentLock(bufHdr),
- LW_EXCLUSIVE));
-
return pg_atomic_read_u32(&bufHdr->state) & BM_DIRTY;
}