- NetBSD Manual Pages
FSYNC(2) NetBSD System Calls Manual FSYNC(2)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
fsync, fsync_range -- synchronize a file's in-core state with that on
Standard C Library (libc, -lc)
fsync_range(int fd, int how, off_t start, off_t length);
fsync() causes all modified data and attributes of fd to be moved to a
permanent storage device. This normally results in all in-core modified
copies of buffers for the associated file to be written to a disk.
fsync() should be used by programs that require a file to be in a known
state, for example, in building a simple transaction facility.
fsync_range() causes all modified data starting at start for length
length of fd to be written to permanent storage. Note that fsync_range()
requires that the file fd must be open for writing.
fsync_range() may flush the file data in one of two manners:
FDATASYNC Synchronize the file data and sufficient meta-data to
retrieve the data for the specified range.
FFILESYNC Synchronize all modified file data and meta-data for the
By default, fsync_range() does not flush disk caches, assuming that stor-
age media are able to ensure completed writes are transfered to media.
The FDISKSYNC flag may be included in the how parameter to trigger flush-
ing of all disk caches for the file.
If the length parameter is zero, fsync_range() will synchronize all of
the file data.
A 0 value is returned on success. A -1 value indicates an error.
fsync() or fsync_range() fail if:
[EBADF] fd is not a valid descriptor.
[EINVAL] fd refers to a socket, not to a file.
[EIO] An I/O error occurred while reading from or writing to
the file system.
Additionally, fsync_range() fails if:
[EBADF] fd is not open for writing.
[EINVAL] start + length is less than start.
For optimal efficiency, the fsync_range() call requires that the file
system containing the file referenced by fd support partial synchroniza-
tion of file data. For file systems which do not support partial syn-
chronization, the entire file will be synchronized and the call will be
the equivalent of calling fsync().
The fsync() function call appeared in 4.2BSD.
The fsync_range() function call first appeared in NetBSD 2.0 and is mod-
eled after the function available in AIX.
NetBSD 6.0 May 17, 2010 NetBSD 6.0