routine fsys_syncfs (
    fsys: fsys_t;
    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.


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).


Invoke netfs_attempt_syncfs.


Invoke fsys syncfs on all active children, and invoke diskfs_sync_everything and diskfs_set_hypermetadata.

Usage Examples


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