]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix missing fsync of SLRU directories.
authorThomas Munro <tmunro@postgresql.org>
Wed, 23 Sep 2020 21:26:09 +0000 (09:26 +1200)
committerThomas Munro <tmunro@postgresql.org>
Wed, 23 Sep 2020 22:35:10 +0000 (10:35 +1200)
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/slru.c

index 1f6568449179fce55879dbff3fcd37ca40d0c4b3..68b4fb717242ee7c2d6f77a7a29ed0382753e7d0 100644 (file)
@@ -1150,6 +1150,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);
 }
 
 /*