routine file_sync (
    file: file_t;
    RPT
    wait: int;
    omit_metadata: int);

Sync the individual file. If omit_metadata is set, then it is only necessary for the server to updated the actual contents of the file, not any associated metadata.

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.

libtrivfs

Pass the call through to the underlying node.

?storeio / ?streamio

Instead of to the underlying node, pass the call through to the backend (device).

libnetfs

Invoke netfs_attempt_sync.

libdiskfs

Invoke diskfs_file_update.

Usage Examples

glibc

  • fdatasync

    file_syncfs (FD, true, true) -- invoke it on the passed file descriptor, do wait for completion, do allow omitting to update the associated metadata.

  • fsync

    file_syncfs (FD, true, false) -- invoke it on the passed file descriptor, do wait for completion, don't allow omitting to update the associated metadata.