From: Andres Freund Date: Wed, 26 Oct 2022 12:05:07 -0700 Subject: [PATCH v5 05/15] bufmgr: Add Pin/UnpinLocalBuffer() diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index fa20fab5a2..6f50dbd212 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -4288,18 +4268,16 @@ ConditionalLockBuffer(Buffer buffer) } void -BufferCheckOneLocalPin(Buffer buffer) +BufferCheckWePinOnce(Buffer buffer) This name is weird. Who is we? diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index 5325ddb663..798c5b93a8 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c +bool +PinLocalBuffer(BufferDesc *buf_hdr, bool adjust_usagecount) +{ + uint32 buf_state; + Buffer buffer = BufferDescriptorGetBuffer(buf_hdr); + int bufid = -(buffer + 1); You do int buffid = -buffer - 1; in UnpinLocalBuffer() They should be consistent. int bufid = -(buffer + 1); I think this version is better: int buffid = -buffer - 1; Since if buffer is INT_MAX, then the -(buffer + 1) version invokes undefined behavior while the -buffer - 1 version doesn't.