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

FreeBSD Manual Pages

  
 
  

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

NAME
     sync -- synchronize disk block in-core status with	that on	disk

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <unistd.h>

     void
     sync(void);

DESCRIPTION
     The sync()	function forces	a write	of dirty (modified) buffers in the
     block buffer cache	out to disk.  The kernel keeps this information	in
     core to reduce the	number of disk I/O transfers required by the system.
     As	information in the cache is lost after a system	crash, kernel thread
     ioflush ensures that dirty	buffers	are synced to disk eventually.	By de-
     fault, a dirty buffer is synced after 30 seconds, but some	filesystems
     exploit ioflush features to sync directory	data and metadata faster (af-
     ter 15 and	10 seconds, respectively).

     The function fsync(2) may be used to synchronize individual file descrip-
     tor attributes.

CAUTIONS
     Many modern disks contain write-back caches.  In theory sync() flushes
     these.  In	practice there are many	possible ways for this mechanism to go
     astray.  It is prudent (where possible) to	allow a	few seconds after
     syncing for everything to settle before e.g. turning off the power.

     It	may also be desirable to use dkctl(8) or scsictl(8) to disable the
     write-back	cache entirely.

SEE ALSO
     fsync(2), dkctl(8), scsictl(8), sync(8)

HISTORY
     A sync() function call appeared in	Version	6 AT&T UNIX.

     Historically, sync() would	schedule buffers for writing but not actually
     wait for the writes to finish.  It	was necessary to issue a second	or
     sometimes a third call to ensure that all buffers had in fact been	writ-
     ten out.  In NetBSD, sync() does not return until all buffers have	been
     written.

BSD				March 25, 2009				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | CAUTIONS | SEE ALSO | HISTORY

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

home | help