DropRelFileNodeBuffers_unlock_v1.patch
application/octet-stream
Filename: DropRelFileNodeBuffers_unlock_v1.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
Series: patch v1
| File | + | − |
|---|---|---|
| src/backend/storage/buffer/bufmgr.c | 0 | 0 |
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
new file mode 100644
index acec3bd..1c26555
*** a/src/backend/storage/buffer/bufmgr.c
--- b/src/backend/storage/buffer/bufmgr.c
*************** DropRelFileNodeBuffers(RelFileNodeBacken
*** 2059,2064 ****
--- 2059,2068 ----
{
volatile BufferDesc *bufHdr = &BufferDescriptors[i];
+ /* due to AccessExclusive lock, no tags should be mutating towards
+ * The rnode. They might be mutating away, so recheck after locking*/
+ if (!RelFileNodeEquals(bufHdr->tag.rnode, rnode.node)) continue;
+
LockBufHdr(bufHdr);
if (RelFileNodeEquals(bufHdr->tag.rnode, rnode.node) &&
(bufHdr->tag.forkNum == forkNum ||