Re: Creation of an empty table is not fsync'd at checkpoint

Thomas Munro <thomas.munro@gmail.com>

From: Thomas Munro <thomas.munro@gmail.com>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-01-27T22:11:28Z
Lists: pgsql-hackers
On Fri, Jan 28, 2022 at 8:12 AM Thomas Munro <thomas.munro@gmail.com> wrote:
> On Fri, Jan 28, 2022 at 6:55 AM Heikki Linnakangas <hlinnaka@iki.fi> wrote:
> > I think the simplest fix is to call register_dirty_segment() from
> > mdcreate(). As in the attached. Thoughts?
>
> +1

[Testing]

Erm, so now I see my new table in checkpoint's activities:

openat(AT_FDCWD,"base/5/16399",O_RDWR,00)     = 20 (0x14)
fsync(20)                     = 0 (0x0)

... but we still never synchronize "base/5".  According to our
project's reading of the POSIX tea leaves we should be doing that to
nail down the directory entry.



Commits

  1. Ensure that creation of an empty relfile is fsync'd at checkpoint.

  2. Fix missing fsync of SLRU directories.