Refactored the code a bit along with fixes. Manually tested them on centos & Ubuntu (the later has copy_file_range())
For the first patch, actually I have some concerns. My assumption is that the target pg_data directory should be fsync-ed already. This should be correct normally but there is one scenario: a cleanly-shutdown database’s pgdata directory was copied to another directory, in this case the new pgdata is not fsync-ed - I’m not sure if that exists in real production environment or not, but even considering this we could still use the optimization for the case that calls ensureCleanShutdown() since this ensures a pgdata fsync on the target.