Provided by: manpages-de-dev_4.27.0-1_all 

BEZEICHNUNG
fsync, fdatasync - den gepufferten Dateiinhalt mit einem Datenträger synchronisieren
BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT
#include <unistd.h>
int fsync(int dd);
int fdatasync(int dd);
Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):
fsync():
Glibc 2.16 und neuer:
Es müssen keine Feature-Test-Makros definiert werden
Glibc bis zu einschließlich 2.15:
_BSD_SOURCE || _XOPEN_SOURCE
|| /* Seit Glibc 2.8: */ _POSIX_C_SOURCE >= 200112L
fdatasync():
_POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500
BESCHREIBUNG
fsync() überträgt (»leert«) alle veränderten gepufferten Daten (d.h. geänderte Seiten des
Pufferzwischenspeichers) von der Datei, auf die der Dateideskriptor dd weist, auf die Platte (oder ein
anderes dauerhaftes Speichermedium), so dass sämtliche Änderungsinformationen sogar nach einem Absturz
oder Neustart des Systems wieder hergestellt werden können. Dies beinhaltet das Schreiben oder Leeren
eines Plattenzwischenspeichers, falls vorhanden. Der Aufruf blockiert bis das Gerät meldet, dass die
Übertragung vollständig ist.
Neben dem Leeren der Dateidaten leert fsync() auch alle Metadaten-Informationen, die mit der Datei
verknüpft sind (siehe inode(7)).
Der Aufruf von fsync() garantiert nicht, dass der Verzeichniseintrag der Datei die Platte erreicht. Dafür
wird auch ein explizites fsync() auf einem Dateideskriptor des Verzeichnisses benötigt.
fdatasync() ist fsync() ähnlich, leert aber keine geänderten Metadaten, sofern diese Metadaten nicht
benötigt werden, um die korrekte Handhabung einer nachfolgenden Datenabfrage zu ermöglichen. Änderungen
an st_atime oder st_mtime (Zeit des letzten Zugriffs und Zeit der letzten Änderung; siehe inode(7))
erfordern zum Beispiel keine Leerung, da sie nicht für die korrekte Handhabung eines nachfolgenden Lesens
der Daten benötigt werden. Andererseits würde die Änderung der Dateigröße (st_size, wie sie von
ftruncate(2) vorgenommen wird) ein Leeren der Metadaten erfordern.
Das Ziel von fdatasync() ist die Verminderung der Plattenaktivität durch Anwendungen, die nicht das
Synchronisieren aller Metadaten mit der Platte erfordern.
RÜCKGABEWERT
Bei Erfolg gibt dieser Systemaufruf Null zurück. Bei einem Fehler wird -1 zurückgegeben und errno
gesetzt, um den Fehler anzuzeigen.
FEHLER
EBADF dd ist kein zulässiger offener Dateideskriptor.
EINTR Die Funktion wurde durch ein Signal unterbrochen, siehe signal(7).
EIO Während der Synchronisation trat ein Fehler auf. Der Fehler kann sich auf Daten beziehen, die in
einen anderen Dateideskriptor auf der gleichen Datei geschrieben wurden. Seit Linux 4.13 werden
Fehler vom Zurückschreiben an alle Dateideskriptoren, die Daten geschrieben haben könnten, die den
Fehler auslösten, berichtet. Einige Dateisystem (z.B. NFS) halten genau nach, welche Daten durch
welchen Dateideskriptor gekommen sind und berichten genauer. Andere Dateisysteme (z.B. die meisten
lokalen Dateisysteme) berichten Fehler an alle Dateideskriptoren, die zum Zeitpunkt der
Aufzeichnung des Fehlers offen waren.
ENOSPC Während der Synchronisierung war der Plattenplatz ausgeschöpft.
EROFS
EINVAL dd ist mit einer Spezialdatei (z.B. einer Pipe, einem FIFO oder einem Socket) verbunden, die keine
Synchronisation unterstützt.
ENOSPC
EDQUOT dd ist an eine Datei auf einem NFS- oder anderem Dateisystem, das keinen Platz zum Zeitpunkt des
Systemaufrufs write(2) zuweist, gebunden und ein vorhergehender Schreibzugriff schlug aufgrund
mangelndem Plattenplatz fehl.
VERSIONEN
Auf POSIX-Systemen, auf denen fdatasync() verfügbar ist, ist _POSIX_SYNCHRONIZED_IO in <unistd.h> als ein
Wert größer als 0 definiert. (Siehe auch sysconf(3).)
STANDARDS
POSIX.1-2008.
GESCHICHTE
POSIX.1-2001, 4.2BSD.
Bis einschließlich Linux 2.2 entspricht fdatasync() fsync() und steigert daher nicht die Leistung.
Die fsync()-Implementierungen in älteren Kerneln oder weniger benutzten Dateisystemen wissen nicht, wie
Plattenzwischenspeicher geleert werden. In diesen Fällen müssen Plattenzwischenspeicher mittels hdparm(8)
oder sdparm(8) deaktiviert werden, um sicheres Funktionieren zu garantieren.
Unter AT&T UNIX System V Release 4 muss dd zum Schreiben geöffnet sein. Dies ist von sich aus zu der
ursprünglichen BSD-Schnittstelle inkompatibel und wird durch POSIX verboten, hat aber trotzdem in HP-UX
und AIX überlebt.
SIEHE AUCH
sync(1), bdflush(2), open(2), posix_fadvise(2), pwritev(2), sync(2), sync_file_range(2), fflush(3),
fileno(3), hdparm(8), mount(8)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Chris Leick <c.leick@vollbio.de>, Mario
Blättermann <mario.blaettermann@gmail.com>, Dr. Tobias Quathamer <toddy@debian.org> und Helge Kreutzmann
<debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.
Linux man-pages 6.9.1 2. Mai 2024 fsync(2)