> + if (!user_opts.sync_method) > + user_opts.sync_method = pg_strdup("fsync");
why pstrdup? > +parse_sync_method(const char *optarg, SyncMethod *sync_method) > +{ > + if (strcmp(optarg, "fsync") == 0) > + *sync_method = SYNC_METHOD_FSYNC; > +#ifdef HAVE_SYNCFS > + else if (strcmp(optarg, "syncfs") == 0) > + *sync_method = SYNC_METHOD_SYNCFS; > +#endif > + else > + { > + pg_log_error("unrecognized sync method: %s", optarg); > + return false; > + } This should probably give a distinct error when syncfs is not supported than when it's truely recognized. The patch should handle pg_dumpall, too. Note that /bin/sync doesn't try to de-duplicate, it does just what you tell it. $ strace -e openat,syncfs,fsync sync / / / -f ... openat(AT_FDCWD, "/", O_RDONLY|O_NONBLOCK) = 3 syncfs(3) = 0 openat(AT_FDCWD, "/", O_RDONLY|O_NONBLOCK) = 3 syncfs(3) = 0 openat(AT_FDCWD, "/", O_RDONLY|O_NONBLOCK) = 3 syncfs(3) = 0 +++ exited with 0 +++