jammy (2) fdatasync.2.gz

Provided by: manpages-de-dev_4.13-4_all bug

BEZEICHNUNG

       fsync, fdatasync - den gepufferten Dateiinhalt mit einem Datenträger synchronisieren

ÜBERSICHT

       #include <unistd.h>

       int fsync(int dd);

       int fdatasync(int dd);

   Mit Glibc erforderliche 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
       entsprechend gesetzt.

FEHLER

       EBADF  dd ist kein zulässiger offener Dateideskriptor.

       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.

KONFORM ZU

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

       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).)

ANMERKUNGEN

       Auf einigen UNIX-Systemen (aber nicht Linux) muss dd ein schreibbarer Dateideskriptor sein.

       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.

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)

KOLOPHON

       Diese Seite ist Teil der Veröffentlichung  5.10  des  Projekts  Linux-man-pages.  Eine  Beschreibung  des
       Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
       sich unter https://www.kernel.org/doc/man-pages/.

Ü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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.