Provided by: manpages-de-dev_0.10-1_all bug

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