Hi,
Since pg_test_fsync is supposed to simulate some aspects of
PostgreSQL's wal_sync_method settings, I think it should be updated to
use the same system calls (which changed in v12). That's mostly on
principle, though in practice, on one system I've managed to see a
small measurable difference.
I left the fsync-after-closing and non-sync'd tests using write(),
because they weren't using lseek(). The latter case is arguably a bit
odd because it's not overwriting pre-allocated blocks, unlike the
earlier tests.