Provided by:
manpages-de-dev_0.10-1_all 
BEZEICHNUNG
fsync, fdatasync - den gepufferten Dateiinhalt mit einem Datentrager
synchronisieren
"UBERSICHT
#include <unistd.h>
int fsync(int fd);
int fdatasync(int fd);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
fsync(): _BSD_SOURCE || _XOPEN_SOURCE
|| /* seit Glibc 2.8: */ _POSIX_C_SOURCE >= 200112L
fdatasync(): _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500
BESCHREIBUNG
fsync() ubertragt alle veranderten gepufferten Daten (d.h. geanderte
Seiten des Pufferzwischenspeichers) von der Datei, auf die der
Dateideskriptor fd weist, auf die Platte (oder ein anderes dauerhaftes
Speichermedium) auf dem die Datei liegt. Der Aufruf blockiert bis das
Gerat meldet, dass die Ubertragung vollstandig ist. AuBerdem werden
Metadaten-Informationen ubertragen, die mit der Datei verknupft sind
(siehe stat(2)).
Der Aufruf von fsync() garantiert nicht, dass der Verzeichniseintrag
der Datei die Platte erreicht. Dafur wird auch ein explizites fsync()
auf einem Dateideskriptor des Verzeichnisses benotigt.
fdatasync() ist fsync() ahnlich, ubertragt aber keine geanderten
Metadaten, sofern diese Metadaten nicht benotigt werden, um die
korrekte Handhabung einer nachfolgenden Datenabfrage zu ermoglichen.
Anderungen an st_atime oder st_mtime (Zeit des letzten Zugriffs und
Zeit der letzten Anderung; siehe stat(2)) erfordern zum Beispiel keine
Ubertragung, da sie nicht fur die korrekte Handhabung eines
nachfolgenden Lesens der Daten benotigt werden. Andererseits wurde die
Anderung der DateigroBe (st_size, wie sie von ftruncate(2) vorgenommen
wird) ein Ubertragen der Metadaten erfordern.
Das Ziel von fdatasync() ist die Verminderung der Plattenaktivitat
durch Anwendungen, die nicht das Synchronisieren aller Metadaten mit
der Platte erfordern.
R"UCKGABEWERT
Bei Erfolg gibt dieser Systemaufruf Null zuruck. Bei einem Fehler wird
-1 zuruckgegeben und errno entsprechend gesetzt.
FEHLER
EBADF fd ist kein gultiger, zum Schreiben geoffneter Dateideskriptor.
EIO Wahrend der Synchronisation ist ein Fehler aufgetreten.
EROFS, EINVAL
fd ist mit einer Spezialdatei verbunden, die keine
Synchronisation unterstutzt.
KONFORM ZU
4.3BSD, POSIX.1-2001.
VERF"UGBARKEIT
Auf POSIX-Systemen, auf denen fdatasync() verfugbar ist, ist
_POSIX_SYNCHRONIZED_IO in <unistd.h> als ein Wert groBer als 0
definiert. (Siehe auch sysconf(3).)
ANMERKUNGEN
Anwendungen, die auf Datenbanken oder Protokolldateien zugreifen,
schreiben oft ein winziges Datenfragment (z.B. eine Zeile in einer
Protokolldatei) und rufen dann sofort fsync() auf, um sicherzustellen,
dass die geschriebenen Daten physisch auf der Festplatte gespeichert
werden. Unglucklicherweise wird fsync() immer zwei Schreiboperationen
anstoBen: eine fur die neu geschriebenen Daten und eine andere, um die
im Inode gespeicherte Anderungszeit zu aktualisieren. Falls die
Anderungszeit nicht Teil des Transaktionskonzeptes ist, kann
fdatasync() benutzt werden, um unnotige Inode-Plattenschreiboperationen
zu vermeiden.
Wenn bei der zugrundeliegenden Festplatte die Zwischenspeicherung beim
Schreiben eingeschaltet ist, dann kann es sein, dass die Daten bei der
Ruckkehr von fsync()/fdatasync() nicht wirklich im dauerhaften Speicher
liegen.
Falls ein Ext2-Dateisystem mit der Option sync eingehangt ist, werden
auBerdem auch Verzeichniseintrage implizit mittels fsync()
synchronisiert.
Auf Kerneln vor 2.4 kann fsync() bei groBen Dateien ineffizient sein.
Eine Alternative konnte die Benutzung des Schalters O_SYNC fur open(2)
sein.
Bis einschlieBlich Linux 2.2 entspricht fdatasync() fsync() und
steigert daher nicht die Leistung.
SIEHE AUCH
bdflush(2), open(2), sync(2), sync_file_range(2), hdparm(8), mount(8),
sync(8), update(8)
KOLOPHON
Diese Seite ist Teil der Veroffentlichung 3.32 des Projekts
Linux-man-pages. Eine Beschreibung des Projekts und Informationen, wie
Fehler gemeldet werden konnen, finden sich unter
http://www.kernel.org/doc/man-pages/.
"UBERSETZUNG
Die deutsche Ubersetzung dieser Handbuchseite wurde von Chris Leick
<c.leick@vollbio.de> erstellt.
Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General
Public License Version 3 oder neuer bezuglich der Copyright-
Bedingungen. Es wird KEINE HAFTUNG ubernommen.
Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden,
schicken Sie bitte eine E-Mail an <debian-l10n-
german@lists.debian.org>.