diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 0f0f1ca..66d62ca 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -939,7 +939,7 @@ XLogInsertRecord(XLogRecData *rdata, XLogRecPtr fpw_lsn)
 		Assert(RedoRecPtr < Insert->RedoRecPtr);
 		RedoRecPtr = Insert->RedoRecPtr;
 	}
-	doPageWrites = (Insert->fullPageWrites || Insert->forcePageWrites);
+	doPageWrites = (Insert->fullPageWrites != FULL_PAGE_WRITES_OFF || Insert->forcePageWrites);
 	doPageCompression = (Insert->fullPageWrites == FULL_PAGE_WRITES_COMPRESS);
 
 	if (fpw_lsn != InvalidXLogRecPtr && fpw_lsn <= RedoRecPtr && doPageWrites)
@@ -5998,7 +5998,7 @@ StartupXLOG(void)
 	lastFullPageWrites = checkPoint.fullPageWrites;
 
 	RedoRecPtr = XLogCtl->RedoRecPtr = XLogCtl->Insert.RedoRecPtr = checkPoint.redo;
-	doPageWrites = lastFullPageWrites;
+	doPageWrites = lastFullPageWrites != FULL_PAGE_WRITES_OFF;
 	doPageCompression = (lastFullPageWrites == FULL_PAGE_WRITES_COMPRESS);
 
 	if (RecPtr < checkPoint.redo)
@@ -7284,8 +7284,9 @@ InitXLOGAccess(void)
 
 	/* Use GetRedoRecPtr to copy the RedoRecPtr safely */
 	(void) GetRedoRecPtr();
-	/* Also update our copy of doPageWrites. */
-	doPageWrites = (Insert->fullPageWrites || Insert->forcePageWrites);
+	/* Also update our copy of doPageWrites and doPageCompression */
+	doPageWrites = (Insert->fullPageWrites != FULL_PAGE_WRITES_OFF || Insert->forcePageWrites);
+	doPageCompression = (Insert->fullPageWrites == FULL_PAGE_WRITES_COMPRESS);
 
 	/* Also initialize the working areas for constructing WAL records */
 	InitXLogInsert();
@@ -8569,7 +8570,7 @@ UpdateFullPageWrites(void)
 		XLogInsert(RM_XLOG_ID, XLOG_FPW_CHANGE);
 	}
 
-	if (!fullPageWrites)
+	if (fullPageWrites == FULL_PAGE_WRITES_OFF)
 	{
 		WALInsertLockAcquireExclusive();
 		Insert->fullPageWrites = fullPageWrites;
