0001-Fix-recovering-damaged-FSM-pages.patch

text/x-patch

Filename: 0001-Fix-recovering-damaged-FSM-pages.patch
Type: text/x-patch
Part: 0
Message: FSM doesn't recover after zeroing damaged page.

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: format-patch
Series: patch 0001
Subject: Mark buffer dirty for FSM pages that were newly inited. E.g. after zeroing damaged pages.
File+
src/backend/storage/freespace/freespace.c 3 0
From 99f0ab536f180a1c5a57246e0929acfeb915d88e Mon Sep 17 00:00:00 2001
From: "Anton A. Melnikov" <a.melnikov@postgrespro.ru>
Date: Fri, 7 Feb 2025 02:57:34 +0300
Subject: [PATCH] Mark buffer dirty for FSM pages that were newly inited. E.g.
 after zeroing damaged pages.

---
 src/backend/storage/freespace/freespace.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/backend/storage/freespace/freespace.c b/src/backend/storage/freespace/freespace.c
index 4773a9cc65e..a6479977c6d 100644
--- a/src/backend/storage/freespace/freespace.c
+++ b/src/backend/storage/freespace/freespace.c
@@ -614,7 +614,10 @@ fsm_readbuf(Relation rel, FSMAddress addr, bool extend)
 	{
 		LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
 		if (PageIsNew(BufferGetPage(buf)))
+		{
 			PageInit(BufferGetPage(buf), BLCKSZ, 0);
+			MarkBufferDirty(buf);
+		}
 		LockBuffer(buf, BUFFER_LOCK_UNLOCK);
 	}
 	return buf;
-- 
2.48.1