Sponsored Content
Top Forums UNIX for Advanced & Expert Users Does sync(2) block writes until completed? Post 302239881 by jim mcnamara on Wednesday 24th of September 2008 03:44:56 PM
Old 09-24-2008
When sync is called - maybe by the syncer daemon, it requests the kernel to write all of it's buffers from all buffers for all file descriptors to disk. The kernel does not have to do it exactly at that point, it is a scheduled request.

sync returns before the completion of all the kernel I/O it asked to schedule. It can return before any I/O starts in fact.

On systems with no buffer cache, sync may just be a dummy call that does nothing, because no 'syncing' is required. On a multiprocessor system, processes may continue to call the write() system call when you call sync -- it will not block writes.

I don't know what you are seeing, but sync is not necessarily the cause. try
Code:
 strace -rT sync

and see what you get.
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sh script that reads/writes based upon contents of a file

Hi everyone, Ive got a quick question about the feasibility and any suggestions for a shell script. I can use sh or ksh, doesnt matter. Basically, Ive got an output file from a db2 command that looks like so: SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 ... (3 Replies)
Discussion started by: rdudejr
3 Replies

2. Solaris

Sync to Green vs. Separate Sync

Hi all....I have a Sun Ultra2 that I want to use with my PC monitor. I have purchased an adapter that does not work and I was told I need to change my video card setting (if I can) to Separate Sync.....my Monitor product number ends in 1343......I am running SunOS 5.7 ......anyone have any ideas? ... (0 Replies)
Discussion started by: psantinello
0 Replies

3. UNIX for Dummies Questions & Answers

which process writes to file

Some process rewrites a file ( i'm hacked :) Can I somehow monitor which process does that? (2 Replies)
Discussion started by: hachik
2 Replies

4. Shell Programming and Scripting

Perl: FH and multiple writes

I found this logging subroutine on the net that I want to use but despite trying many things, I cannot figure out how to get the date in front of the logged text. Ideally what I'm looking for is a line that looks something like this: Wed Aug 20 18:17:29 PDT 2008 - my logging info here. my... (2 Replies)
Discussion started by: gctaylor
2 Replies

5. Solaris

Network writes contantly spiking in throughput

Hey guys First post... and im not exactly a solaris guru but here goes Ive setup a solaris 10 box with a raidz2 set of 6 disks... I have also setup Samba with open shares for some CIFs access... now my issue is that when i transfer large files to it the network performance contantly... (8 Replies)
Discussion started by: silicoon
8 Replies

6. Shell Programming and Scripting

Reading from a file a background program writes to

Hi! #!/usr/bin/env bash rm tmpcomm nc -v -u -l 444 | hexdump -b > tmpcomm while : do read l1 < tmpcomm read l2 < tmpcomm read l3 < tmpcomm read l4 < tmpcomm # do something doneI start netcat in the background and listen for an incoming conncetion. All incoming... (1 Reply)
Discussion started by: torax123
1 Replies

7. Shell Programming and Scripting

Help with script that reads and writes java console Minecraft

Hi I am looking for an easy way to lock game mode (0) for everyone included op on a Minecraft server. It can be a script that every time a player changes game to 1 the script changes back to 0. What the player writes is visible in the java console. I am not good at script programming and my... (0 Replies)
Discussion started by: MyMorris
0 Replies

8. Solaris

OpenBSM not catching all file writes

I have a custom auditing class configured for these events but it doesn't seem to be catching it when I do a "echo hey > test.txt" Any ideas on why that is? ---------- Post updated at 06:04 PM ---------- Previous update was at 05:47 PM ---------- Scratch this topic, it looks like it's because... (0 Replies)
Discussion started by: thmnetwork
0 Replies
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 default, a dirty buffer is synced after 30 seconds, but some filesystems exploit ioflush features to sync directory data and metadata faster (after 15 and 10 seconds, respectively). The function fsync(2) may be used to synchronize individual file descriptor 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 written out. In NetBSD, sync() does not return until all buffers have been written. BSD
March 25, 2009 BSD
All times are GMT -4. The time now is 09:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy