routine fsys_syncfs (
    fsys: fsys_t;
    RPT
    wait: int;
    do_children: int);

Synchronize the entire filesystem.

This function has a companion in file syncfs, which is invoked on an arbitrary node instead of the server's control port. 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: ?symlink, nfs.

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 to the 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

libdiskfs

In the implementations of both file syncfs and fsys syncfs, fsys syncfs is invoked on all active children.