postgres.git / summary / log / commit / refs

commit    aca74843e40f43d0cceffd314aec6aa6f80e83d5
Author:   Thomas Munro <tmunro@postgresql.org>
Date:     Wed Sep 23 21:26:09 2020 +0000
First released in: 14.0, 9.5.24, 9.6.20, 10.15, 11.10, 12.5, 13.1

    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: Andres Freund <andres@anarazel.de>
    Reviewed-by: Michael Paquier <michael@paquier.xyz>
    Discussion: https://postgr.es/m/CA%2BhUKGLtsTUOScnNoSMZ-2ZLv%2BwGh01J6kAo_DM8mTRq1sKdSQ%40mail.gmail.com


src/backend/access/transam/clog.c | 7 ------- src/backend/access/transam/commit_ts.c | 6 ------ src/backend/access/transam/slru.c | 4 ++++ 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 65aa8841f7c..9e352d26583 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -836,13 +836,6 @@ CheckPointCLOG(void) /* Flush dirty CLOG pages to disk */ TRACE_POSTGRESQL_CLOG_CHECKPOINT_START(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); } diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c index 5244b06a2b6..f6a7329ba3a 100644 --- a/src/backend/access/transam/commit_ts.c +++ b/src/backend/access/transam/commit_ts.c @@ -822,12 +822,6 @@ CheckPointCommitTs(void) { /* Flush dirty CommitTs pages to disk */ SimpleLruFlush(CommitTsCtl, true); - - /* - * fsync pg_commit_ts to ensure that any files flushed previously are - * durably on disk. - */ - fsync_fname("pg_commit_ts", true); } /* diff --git a/src/backend/access/transam/slru.c b/src/backend/access/transam/slru.c index 7640f153c22..fe7d759a8c1 100644 --- a/src/backend/access/transam/slru.c +++ b/src/backend/access/transam/slru.c @@ -1187,6 +1187,10 @@ SimpleLruFlush(SlruCtl ctl, bool allow_redirtied) } if (!ok) SlruReportIOError(ctl, pageno, InvalidTransactionId); + + /* Ensure that directory entries for new files are on disk. */ + if (ctl->do_fsync) + fsync_fname(ctl->Dir, true); } /* [parent: 6b2c4e59d016]