routine file_syncfs (
file: file_t;
RPT
wait: int;
do_children: int);
Synchronize the entire filesystem.
This function has a companion in fsys syncfs
, which is
invoked on the server's control port instead of an arbitrary node. Both of
them are usually implemented in equivalent ways.
Implementation Examples
Servers that either don't keep any unsynchronized state (or don't have a
backing store at all) can simply return 0
. Examples: nfs.
The implementation typically doesn't care on which specific node (as exported
by the implementing server) file syncfs
is being invoked on.
libtrivfs
Invoke file sync
on the underlying node. Rationale: the
underlying node represents this filesystem's backend, and once this node is
synchronized, the whole libtrivfs-based filesystem is to be considered
synchronized.
?storeio / ?streamio
Instead of the to underlying node, pass the call through to the backend (device).
libnetfs
Invoke netfs_attempt_syncfs
.
libdiskfs
Invoke fsys syncfs
on all active children, and invoke
diskfs_sync_everything
and diskfs_set_hypermetadata
.
Usage Examples
glibc
sync
file_syncfs ("/", false, true)
-- invoke it on the process' root directory (INIT_PORT_CRDIR
), don't wait for completion, do synchronize child filesystems.