Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FSYNC(2)		    BSD	System Calls Manual		      FSYNC(2)

NAME
     fsync, fsync_range	-- synchronize a file's	in-core	state with that	on
     disk

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <unistd.h>

     int
     fsync(int fd);

     int
     fsync_range(int fd, int how, off_t	start, off_t length);

DESCRIPTION
     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
		      specified	range.

     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.

RETURN VALUES
     A 0 value is returned on success.	A -1 value indicates an	error.

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

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

SEE ALSO
     sync(2), sync(8)

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

BSD				 May 17, 2010				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | NOTES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=fsync&sektion=2&manpath=NetBSD+6.0>

home | help