On Thu, Mar 11, 2021 at 11:38 AM Thomas Munro <thomas.mu...@gmail.com> wrote: > On Thu, Mar 11, 2021 at 11:01 AM Michael Brown > <michael.br...@discourse.org> wrote: > > * is there a knob missing we can configure? > > * can we get an opt-in knob to use a single sync() call instead of a > > recursive fsync()? > > * would you be open to merging a patch providing said knob? > > * is there something else we missed? > > As discussed on that other thread, I don't think sync() is an option > (it doesn't wait on all OSes or in the standard and it doesn't report > errors). syncfs() on Linux 5.8+ looks like a good candidate though, > and I think we'd consider a patch like that. I mean, I even posted > one[1] in that other thread. There will of course be cases where > that's slower (small database sharing filesystem with other software > that has a lot of dirty data to write back).
Thinking about this some more, if you were to propose a patch like that syncfs() one but make it a configurable option, I'd personally be in favour of trying to squeeze it into v14. Others might object on commitfest procedural grounds, I dunno, but I think this is a real operational issue and that's a fairly simple and localised change. I've run into a couple of users who have just commented that recursive fsync() code out! I'd probably make it an enum-style GUC, because I intend to do some more work on my "precise" alternative, though not in time for this release, and it could just as well be an option too.