Commit aca74843 authored by Thomas Munro's avatar Thomas Munro

Fix missing fsync of SLRU directories.

Harmonize behavior by moving reponsibility for fsyncing directories down
into slru.c.  In 10 and later, only the multixact directories were
missed (see commit 1b02be21), and in older branches all SLRUs were
missed.

Back-patch to all supported releases.
Reviewed-by: default avatarAndres Freund <andres@anarazel.de>
Reviewed-by: default avatarMichael Paquier <michael@paquier.xyz>
Discussion: https://postgr.es/m/CA%2BhUKGLtsTUOScnNoSMZ-2ZLv%2BwGh01J6kAo_DM8mTRq1sKdSQ%40mail.gmail.com
parent 6b2c4e59
...@@ -836,13 +836,6 @@ CheckPointCLOG(void) ...@@ -836,13 +836,6 @@ CheckPointCLOG(void)
/* Flush dirty CLOG pages to disk */ /* Flush dirty CLOG pages to disk */
TRACE_POSTGRESQL_CLOG_CHECKPOINT_START(true); TRACE_POSTGRESQL_CLOG_CHECKPOINT_START(true);
SimpleLruFlush(XactCtl, true); SimpleLruFlush(XactCtl, true);
/*
* fsync pg_xact to ensure that any files flushed previously are durably
* on disk.
*/
fsync_fname("pg_xact", true);
TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE(true); TRACE_POSTGRESQL_CLOG_CHECKPOINT_DONE(true);
} }
......
...@@ -822,12 +822,6 @@ CheckPointCommitTs(void) ...@@ -822,12 +822,6 @@ CheckPointCommitTs(void)
{ {
/* Flush dirty CommitTs pages to disk */ /* Flush dirty CommitTs pages to disk */
SimpleLruFlush(CommitTsCtl, true); SimpleLruFlush(CommitTsCtl, true);
/*
* fsync pg_commit_ts to ensure that any files flushed previously are
* durably on disk.
*/
fsync_fname("pg_commit_ts", true);
} }
/* /*
......
...@@ -1187,6 +1187,10 @@ SimpleLruFlush(SlruCtl ctl, bool allow_redirtied) ...@@ -1187,6 +1187,10 @@ SimpleLruFlush(SlruCtl ctl, bool allow_redirtied)
} }
if (!ok) if (!ok)
SlruReportIOError(ctl, pageno, InvalidTransactionId); SlruReportIOError(ctl, pageno, InvalidTransactionId);
/* Ensure that directory entries for new files are on disk. */
if (ctl->do_fsync)
fsync_fname(ctl->Dir, true);
} }
/* /*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment