mirror of https://github.com/postgres/postgres
This commit allows specifying a --sync-method in several frontend utilities that must synchronize many files to disk (initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind, and pg_upgrade). On Linux, users can specify "syncfs" to synchronize the relevant file systems instead of calling fsync() for every single file. In many cases, using syncfs() is much faster. As with recovery_init_sync_method, this new option comes with some caveats. The descriptions of these caveats have been moved to a new appendix section in the documentation. Co-authored-by: Justin Pryzby Reviewed-by: Michael Paquier, Thomas Munro, Robert Haas, Justin Pryzby Discussion: https://postgr.es/m/20210930004340.GM831%40telsasoft.compull/140/head
parent
cccc6cdeb3
commit
8c16ad3b43
@ -0,0 +1,36 @@ |
|||||||
|
<!-- doc/src/sgml/syncfs.sgml --> |
||||||
|
|
||||||
|
<appendix id="syncfs"> |
||||||
|
<title><function>syncfs()</function> Caveats</title> |
||||||
|
|
||||||
|
<indexterm zone="syncfs"> |
||||||
|
<primary>syncfs</primary> |
||||||
|
</indexterm> |
||||||
|
|
||||||
|
<para> |
||||||
|
On Linux <function>syncfs()</function> may be specified for some |
||||||
|
configuration parameters (e.g., |
||||||
|
<xref linkend="guc-recovery-init-sync-method"/>), server applications (e.g., |
||||||
|
<application>pg_upgrade</application>), and client applications (e.g., |
||||||
|
<application>pg_basebackup</application>) that involve synchronizing many |
||||||
|
files to disk. <function>syncfs()</function> is advantageous in many cases, |
||||||
|
but there are some trade-offs to keep in mind. |
||||||
|
</para> |
||||||
|
|
||||||
|
<para> |
||||||
|
Since <function>syncfs()</function> instructs the operating system to |
||||||
|
synchronize a whole file system, it typically requires many fewer system |
||||||
|
calls than using <function>fsync()</function> to synchronize each file one by |
||||||
|
one. Therefore, using <function>syncfs()</function> may be a lot faster than |
||||||
|
using <function>fsync()</function>. However, it may be slower if a file |
||||||
|
system is shared by other applications that modify a lot of files, since |
||||||
|
those files will also be written to disk. |
||||||
|
</para> |
||||||
|
|
||||||
|
<para> |
||||||
|
Furthermore, on versions of Linux before 5.8, I/O errors encountered while |
||||||
|
writing data to disk may not be reported to the calling program, and relevant |
||||||
|
error messages may appear only in kernel logs. |
||||||
|
</para> |
||||||
|
|
||||||
|
</appendix> |
||||||
Loading…
Reference in new issue