xref: /minix3/lib/libc/sys/sync.2 (revision 2fe8fb192fe7e8720e3e7a77f928da545e872a6a)
1*2fe8fb19SBen Gras.\"	$NetBSD: sync.2,v 1.17 2009/03/25 06:46:21 wiz Exp $
2*2fe8fb19SBen Gras.\"
3*2fe8fb19SBen Gras.\" Copyright (c) 1980, 1991, 1993
4*2fe8fb19SBen Gras.\"	The Regents of the University of California.  All rights reserved.
5*2fe8fb19SBen Gras.\"
6*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without
7*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions
8*2fe8fb19SBen Gras.\" are met:
9*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright
10*2fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer.
11*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright
12*2fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer in the
13*2fe8fb19SBen Gras.\"    documentation and/or other materials provided with the distribution.
14*2fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors
15*2fe8fb19SBen Gras.\"    may be used to endorse or promote products derived from this software
16*2fe8fb19SBen Gras.\"    without specific prior written permission.
17*2fe8fb19SBen Gras.\"
18*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19*2fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20*2fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21*2fe8fb19SBen Gras.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22*2fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23*2fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24*2fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25*2fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26*2fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27*2fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28*2fe8fb19SBen Gras.\" SUCH DAMAGE.
29*2fe8fb19SBen Gras.\"
30*2fe8fb19SBen Gras.\"     @(#)sync.2	8.1 (Berkeley) 6/4/93
31*2fe8fb19SBen Gras.\"
32*2fe8fb19SBen Gras.Dd March 25, 2009
33*2fe8fb19SBen Gras.Dt SYNC 2
34*2fe8fb19SBen Gras.Os
35*2fe8fb19SBen Gras.Sh NAME
36*2fe8fb19SBen Gras.Nm sync
37*2fe8fb19SBen Gras.Nd "synchronize disk block in-core status with that on disk"
38*2fe8fb19SBen Gras.Sh LIBRARY
39*2fe8fb19SBen Gras.Lb libc
40*2fe8fb19SBen Gras.Sh SYNOPSIS
41*2fe8fb19SBen Gras.In unistd.h
42*2fe8fb19SBen Gras.Ft void
43*2fe8fb19SBen Gras.Fn sync void
44*2fe8fb19SBen Gras.Sh DESCRIPTION
45*2fe8fb19SBen GrasThe
46*2fe8fb19SBen Gras.Fn sync
47*2fe8fb19SBen Grasfunction forces a write of dirty (modified) buffers
48*2fe8fb19SBen Grasin the block buffer cache out
49*2fe8fb19SBen Grasto disk.
50*2fe8fb19SBen GrasThe kernel keeps this information in core to reduce
51*2fe8fb19SBen Grasthe number of disk I/O transfers required by the system.
52*2fe8fb19SBen GrasAs information in the cache is lost after a system crash,
53*2fe8fb19SBen Graskernel thread
54*2fe8fb19SBen Gras.Nm ioflush
55*2fe8fb19SBen Grasensures that dirty buffers are synced to disk
56*2fe8fb19SBen Graseventually.
57*2fe8fb19SBen GrasBy default, a dirty buffer is synced after 30 seconds,
58*2fe8fb19SBen Grasbut some filesystems exploit
59*2fe8fb19SBen Gras.Nm ioflush
60*2fe8fb19SBen Grasfeatures to sync directory data and metadata faster
61*2fe8fb19SBen Gras(after 15 and 10 seconds, respectively).
62*2fe8fb19SBen Gras.Pp
63*2fe8fb19SBen GrasThe function
64*2fe8fb19SBen Gras.Xr fsync 2
65*2fe8fb19SBen Grasmay be used to synchronize individual file descriptor
66*2fe8fb19SBen Grasattributes.
67*2fe8fb19SBen Gras.Sh CAUTIONS
68*2fe8fb19SBen GrasMany modern disks contain write-back caches.
69*2fe8fb19SBen GrasIn theory
70*2fe8fb19SBen Gras.Fn sync
71*2fe8fb19SBen Grasflushes these.
72*2fe8fb19SBen GrasIn practice there are many possible ways for this mechanism to go
73*2fe8fb19SBen Grasastray.
74*2fe8fb19SBen GrasIt is prudent (where possible) to allow a few seconds after syncing
75*2fe8fb19SBen Grasfor everything to settle before e.g. turning off the power.
76*2fe8fb19SBen Gras.Pp
77*2fe8fb19SBen GrasIt may also be desirable to use
78*2fe8fb19SBen Gras.Xr dkctl 8
79*2fe8fb19SBen Grasor
80*2fe8fb19SBen Gras.Xr scsictl 8
81*2fe8fb19SBen Grasto disable the write-back cache entirely.
82*2fe8fb19SBen Gras.Sh SEE ALSO
83*2fe8fb19SBen Gras.Xr fsync 2 ,
84*2fe8fb19SBen Gras.Xr dkctl 8 ,
85*2fe8fb19SBen Gras.Xr scsictl 8 ,
86*2fe8fb19SBen Gras.Xr sync 8
87*2fe8fb19SBen Gras.Sh HISTORY
88*2fe8fb19SBen GrasA
89*2fe8fb19SBen Gras.Fn sync
90*2fe8fb19SBen Grasfunction call appeared in
91*2fe8fb19SBen Gras.At v6 .
92*2fe8fb19SBen Gras.Pp
93*2fe8fb19SBen GrasHistorically,
94*2fe8fb19SBen Gras.Fn sync
95*2fe8fb19SBen Graswould schedule buffers for writing but not actually wait for the
96*2fe8fb19SBen Graswrites to finish.
97*2fe8fb19SBen GrasIt was necessary to issue a second or sometimes a third call to ensure
98*2fe8fb19SBen Grasthat all buffers had in fact been written out.
99*2fe8fb19SBen GrasIn
100*2fe8fb19SBen Gras.Nx ,
101*2fe8fb19SBen Gras.Fn sync
102*2fe8fb19SBen Grasdoes not return until all buffers have been written.
103