Provided by: manpages-pl-dev_20051117-1_all bug

NAZWA

       fsync,  fdatasync  -  synchronizacja  pełnego wewnątrzrdzeniowego stanu
       pliku z zapisanym na dysku

SKŁADNIA

       #include <unistd.h>

       int fsync(int fd);

       int fdatasync(int fd);

OPIS

       fsync kopiuje wszystkie wewnątrzrdzeniowe części pliku na dysk i  czeka
       na  zgłoszenie  przez  urządzenie,  że  wszystkie  dane znajdują się na
       trwałym  nośniku.   Aktualizuje  również  informacje   statystyczne   o
       metadanych. Nie gwarantuje, że wpis w katalogu zawierający informacje o
       pliku również zostanie zapisany na dysku.  Aby  to  osiągnąć,  wymagane
       jest jawne wywołanie fsync dla deskryptora katalogu.

       fdatasync   robi   to  samo,  co  fsync,  lecz  zapisuje  jedynie  dane
       użytkownika, bez metadanych, takich jak mtime czy atime.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu zwracane jest zero. Po błędzie  zwracane  jest
       -1 i odpowiednio ustawiane errno.

BŁĘDY

       EBADF  fd  nie jest prawidłowym deskryptorem pliku otwartego do zapisu.

       EROFS, EINVAL
              fd jest powiązany  ze  specjalnym  plikiem,  który  nie  wspiera
              synchronizacji.

       EIO    Pojawił się błąd podczas synchronizacji.

UWAGI

       W  sytuacji, gdy twardy dysk ma włączone buforowanie zapisów, dane mogą
       w rzeczywistości nie zostać  zapisane  na  trwałym  nośniku  do  chwili
       powrotu z fsync/fdatasync.

       Gdy  system  plików  ext2  jest  zamontowany  z  opcją  sync,  wpisy  w
       katalogach są również jawnie zapisywane przez fsync.

       W kernelach przed 2.4, fsync na dużych  plkach  mogło  być  niewydajne.
       Alternatywą mogło być używanie znacznika O_SYNC dla open(2).

ZGODNE Z

       POSIX.1b (wcześniej POSIX.4)

ZOBACZ TAKŻE

       bdflush(2), open(2), sync(2), mount(8), update(8), sync(8)