fsync(2) System Calls Manual fsync(2) NUME fsync, fdatasync, fdatasync - sincronizeaza starea din memorie a unui fiier cu dispozitivul de stocare BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int fsync(int fd); int fdatasync(int fd); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): fsync(): glibc 2.16 and later: Nu este necesar sa se defineasca macrocomenzi de testare a caracteristicilor glibc pana la i inclusiv 2.15: _BSD_SOURCE || _XOPEN_SOURCE || /* Incepand cu glibc 2.8: */ _POSIX_C_SOURCE >= 200112L fdatasync(): _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500 DESCRIERE fsync() transfera (,,golete") toate datele modificate din interiorul memoriei (adica paginile modificate ale memoriei cache) pentru fiierul la care face referire descriptorul de fiier fd catre dispozitivul de disc (sau alt dispozitiv de stocare permanenta), astfel incat toate informaiile modificate sa poata fi recuperate chiar daca sistemul se blocheaza sau este repornit. Aceasta operaie include scrierea sau golirea unei memorii cache pe disc, daca este prezenta. Apelul se blocheaza pana cand dispozitivul raporteaza ca transferul a fost finalizat. Pe langa golirea datelor din fiier, fsync() golete i informaiile privind metadatele asociate cu fiierul (a se vedea inode(7)). Apelarea fsync() nu asigura in mod necesar ca intrarea din directorul care conine fiierul a ajuns i ea pe disc. Pentru aceasta, este necesar un fsync() explicit pe un descriptor de fiier pentru director. fdatasync() este similar cu fsync(), dar nu terge metadatele modificate, cu excepia cazului in care aceste metadate sunt necesare pentru a permite ca o recuperare ulterioara a datelor sa fie gestionata corect. De exemplu, modificarile aduse la st_atime sau st_mtime (ora ultimului acces i, respectiv, ora ultimei modificari; a se vedea inode(7)) nu necesita golirea deoarece nu sunt necesare pentru ca o citire ulterioara a datelor sa fie gestionata corect. Pe de alta parte, o modificare a marimii fiierului (st_size, aa cum se face, de exemplu, prin ftruncate(2)), ar necesita o golire a metadatelor. Scopul lui fdatasync() este de a reduce activitatea pe disc pentru aplicaiile care nu au nevoie ca toate metadatele sa fie sincronizate cu discul. VALOAREA RETURNATA In caz de succes, aceste apeluri de sistem returneaza zero. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EBADF descriptor-fiier nu este un descriptor de fiier deschis valid. EINTR Apelul a fost intrerupt de un semnal; a se vedea signal(7). EIO S-a produs o eroare in timpul sincronizarii. Aceasta eroare se poate referi la datele scrise in alt descriptor de fiier pentru acelai fiier.6 Incepand cu Linux 4.13, erorile de rescriere vor fi raportate la toi descriptorii de fiiere care ar fi putut scrie datele care au declanat eroarea. Unele sisteme de fiiere (de exemplu, NFS) urmaresc indeaproape ce date au trecut prin fiecare descriptor de fiier i ofera o raportare mai precisa. Alte sisteme de fiiere (de exemplu, cele mai multe sisteme de fiiere locale) raporteaza erorile la toi descriptorii de fiiere care au fost deschii asupra fiierului in momentul in care a fost inregistrata eroarea. ENOSPC Spaiul pe disc a fost epuizat in timpul sincronizarii. EROFS EINVAL fd este asociat la un fiier special (de exemplu, o conducta, FIFO sau un soclu) care nu accepta sincronizarea. ENOSPC EDQUOT fd este asociat la un fiier pe NFS sau pe un alt sistem de fiiere care nu aloca spaiu in momentul unui apel de sistem write(2), iar o scriere anterioara a euat din cauza spaiului de stocare insuficient. VERSIUNI Pe sistemele POSIX pe care este disponibil fdatasync(), _POSIX_SYNCHRONIZED_IO este definit in la o valoare mai mare decat 0; (a se vedea, de asemenea, sysconf(3)). STANDARDE POSIX.1-2008. ISTORIC POSIX.1-2001, 4.2BSD. In Linux 2.2 i versiunile anterioare, fdatasync() este echivalent cu fsync() i, prin urmare, nu are niciun avantaj de performana. Implementarile fsync() din nucleele mai vechi i sistemele de fiiere mai puin utilizate nu tiu cum sa goleasca memoria cache de pe disc. In aceste cazuri, memoriile cache de disc trebuie dezactivate folosind hdparm(8) sau sdparm(8) pentru a garanta o funcionare sigura. In AT&T UNIX System V Release 4, fd trebuie sa fie deschis pentru scriere. Acest lucru este in sine incompatibil cu interfaa BSD originala i este interzis de POSIX, dar totui supravieuiete in HP-UX i AIX. CONSULTAI I 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) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 fsync(2)