sync_file_range(2) System Calls Manual sync_file_range(2) NUME sync_file_range - sincronizeaza un segment de fiier cu discul BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #define _GNU_SOURCE /* Consultai feature_test_macros(7) */ #define _FILE_OFFSET_BITS 64 #include int sync_file_range(int fd, off_t offset, off_t nbytes, unsigned int flags); DESCRIERE sync_file_range() permite un control precis la sincronizarea fiierului deschis la care se refera descriptorul de fiier fd cu discul. offset este octetul de inceput al intervalului de fiiere care urmeaza sa fie sincronizat. nbytes specifica lungimea intervalului care urmeaza sa fie sincronizat, in octei; daca nbytes este zero, atunci toi octeii de la offset pana la sfaritul fiierului sunt sincronizai. Sincronizarea se face in unitai de dimensiune a paginii de sistem: offset este rotunjit in jos la limita paginii; (offset+nbytes-1) este rotunjit in sus la limita paginii. Argumentul masca de bii flags poate include oricare dintre urmatoarele valori: SYNC_FILE_RANGE_WAIT_BEFORE Ateapta scrierea tuturor paginilor din intervalul specificat care au fost deja trimise controlorului dispozitivului pentru scriere inainte de a efectua orice operaie de scriere. SYNC_FILE_RANGE_WRITE Iniiaza scrierea tuturor paginilor murdare din intervalul specificat care nu sunt in prezent trimise pentru scriere. Reinei ca chiar i acest lucru poate bloca daca incercai sa scriei mai mult decat dimensiunea cozii de solicitari. SYNC_FILE_RANGE_WAIT_AFTER Ateapta scrierea tuturor paginilor din interval dupa efectuarea oricarei operaii de scriere. Specificarea flags ca 0 este permisa, ca o operaie fara efect. Atenie Acest apel de sistem este extrem de periculos i nu trebuie utilizat in programe portabile. Niciuna dintre aceste operaii nu scrie metadatele fiierului. Prin urmare, cu excepia cazului in care aplicaia efectueaza strict suprascrieri ale blocurilor de disc deja instaniate, nu exista garanii ca datele vor fi disponibile dupa o blocare. Nu exista o interfaa de utilizator care sa indice daca o scriere este pur i simplu o suprascriere. Pe sistemele de fiiere care utilizeaza semantica copiere la scriere (de exemplu, btrfs), suprascrierea blocurilor alocate existente este imposibila. Atunci cand se scrie in spaiul prealocat, multe sisteme de fiiere necesita, de asemenea, apeluri catre alocatorul de blocuri, pe care acest apel de sistem nu le sincronizeaza pe disc. Acest apel de sistem nu golete cache-urile de scriere pe disc i, prin urmare, nu ofera nicio integritate a datelor pe sistemele cu cache-uri de scriere pe disc volatile. Cateva detalii SYNC_FILE_RANGE_WAIT_BEFORE i SYNC_FILE_RANGE_WAIT_AFTER vor detecta orice erori de In/Ie sau condiii ENOSPC i le vor returna apelantului. Combinaii utile ale biilor flags sunt: SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE Se asigura ca toate paginile din intervalul specificat care erau murdare cand a fost apelata funcia sync_file_range() sunt plasate sub scriere. Aceasta este o operaie de scriere iniiala pentru integritatea datelor. SYNC_FILE_RANGE_WRITE Incepe scrierea tuturor paginilor murdare din intervalul specificat care nu sunt in prezent in curs de scriere. Aceasta este o operatie asincrona de golire pe disc. Aceasta nu este potrivita pentru operaii de integritate a datelor. SYNC_FILE_RANGE_WAIT_BEFORE (sau SYNC_FILE_RANGE_WAIT_AFTER) Ateapta finalizarea scrierii tuturor paginilor din intervalul specificat. Aceasta opiune poate fi utilizata dupa o operaie anterioara SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE pentru a atepta finalizarea acelei operaii i a obine rezultatul acesteia. SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER Aceasta este o operaie de scriere pentru integritatea datelor care va asigura ca toate paginile din intervalul specificat care erau murdare cand a fost apelata sync_file_range() sunt salvate pe disc. VALOAREA RETURNATA In caz de succes, sync_file_range() returneaza 0; in caz de eec, returneaza -1 i errno este configurata pentru a indica eroarea. ERORI-IEIRE EBADF descriptor-fiier nu este un descriptor de fiier valid. EINVAL flags specifica un bit nevalid; sau offset sau nbytes nu este valid. EIO Eroare de In/Ie. ENOMEM Memorie insuficienta. ENOSPC Spaiu pe disc insuficient. ESPIPE fd se refera la altceva decat un fiier obinuit, un dispozitiv bloc sau un director. VERSIUNI sync_file_range2() Unele arhitecturi (de exemplu, PowerPC, ARM) necesita ca argumentele pe 64 de bii sa fie aliniate intr-o pereche adecvata de registre. Pe astfel de arhitecturi, semnatura apelului sync_file_range() prezentata in SINOPSIS ar fora irosirea unui registru ca umplutura intre argumentele fd i offset. (A se vedea syscall(2) pentru detalii.) Prin urmare, aceste arhitecturi definesc o apelare de sistem diferita care ordoneaza argumentele in mod adecvat: int sync_file_range2(int fd, unsigned int flags, off_t offset, off_t nbytes); Comportamentul acestui apel de sistem este in rest identic cu cel al sync_file_range(). STANDARDE Linux. ISTORIC Linux 2.6.17. sync_file_range2() Un apel de sistem cu aceasta semnatura a aparut pentru prima data pe arhitectura ARM in Linux 2.6.20, cu numele arm_sync_file_range(). A fost redenumit in Linux 2.6.22, cand a fost adaugat apelul de sistem analog pentru PowerPC. Pe arhitecturile care ofera suport glibc, glibc incorporeaza in mod transparent sync_file_range2() sub numele sync_file_range(). NOTE _FILE_OFFSET_BITS trebuie definit ca fiind 64 in codul care preia adresa sync_file_range, daca codul este destinat sa fie portabil pe platformele tradiionale x86 i ARM pe 32 de bii, unde laimea off_t este implicit de 32 de bii. CONSULTAI I fdatasync(2), fsync(2), msync(2), sync(2) 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 sync_file_range(2)