Provided by: manpages-ro-dev_4.28.0-2_all 

NUME
sync_file_range - sincronizează un segment de fișier cu discul
BIBLIOTECA
Biblioteca C standard (libc, -lc)
SINOPSIS
#define _GNU_SOURCE /* Consultați feature_test_macros(7) */
#define _FILE_OFFSET_BITS 64
#include <fcntl.h>
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 fișierului deschis la care se referă
descriptorul de fișier fd cu discul.
offset este octetul de început al intervalului de fișiere care urmează să fie sincronizat. nbytes
specifică lungimea intervalului care urmează să fie sincronizat, în octeți; dacă nbytes este zero, atunci
toți octeții de la offset până la sfârșitul fișierului sunt sincronizați. Sincronizarea se face în
unități de dimensiune a paginii de sistem: offset este rotunjit în jos la limita paginii;
(offset+nbytes-1) este rotunjit în sus la limita paginii.
Argumentul mască de biți flags poate include oricare dintre următoarele valori:
SYNC_FILE_RANGE_WAIT_BEFORE
Așteaptă scrierea tuturor paginilor din intervalul specificat care au fost deja trimise
controlorului dispozitivului pentru scriere înainte de a efectua orice operație de scriere.
SYNC_FILE_RANGE_WRITE
Inițiază scrierea tuturor paginilor murdare din intervalul specificat care nu sunt în prezent
trimise pentru scriere. Rețineți că chiar și acest lucru poate bloca dacă încercați să scrieți
mai mult decât dimensiunea cozii de solicitări.
SYNC_FILE_RANGE_WAIT_AFTER
Așteaptă scrierea tuturor paginilor din interval după efectuarea oricărei operații de scriere.
Specificarea flags ca 0 este permisă, ca o operație fără efect.
Atenție
Acest apel de sistem este extrem de periculos și nu trebuie utilizat în programe portabile. Niciuna
dintre aceste operații nu scrie metadatele fișierului. Prin urmare, cu excepția cazului în care aplicația
efectuează strict suprascrieri ale blocurilor de disc deja instanțiate, nu există garanții că datele vor
fi disponibile după o blocare. Nu există o interfață de utilizator care să indice dacă o scriere este pur
și simplu o suprascriere. Pe sistemele de fișiere care utilizează semantica copiere la scriere (de
exemplu, btrfs), suprascrierea blocurilor alocate existente este imposibilă. Atunci când se scrie în
spațiul prealocat, multe sisteme de fișiere necesită, de asemenea, apeluri către alocatorul de blocuri,
pe care acest apel de sistem nu le sincronizează pe disc. Acest apel de sistem nu golește cache-urile de
scriere pe disc și, prin urmare, nu oferă nicio integritate a datelor pe sistemele cu cache-uri de
scriere pe disc volatile.
Câteva detalii
SYNC_FILE_RANGE_WAIT_BEFORE și SYNC_FILE_RANGE_WAIT_AFTER vor detecta orice erori de In/Ieș sau condiții
ENOSPC și le vor returna apelantului.
Combinații utile ale biților flags sunt:
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE
Se asigură că toate paginile din intervalul specificat care erau murdare când a fost apelată
funcția sync_file_range() sunt plasate sub scriere. Aceasta este o operație de scriere inițială
pentru integritatea datelor.
SYNC_FILE_RANGE_WRITE
Începe scrierea tuturor paginilor murdare din intervalul specificat care nu sunt în prezent în
curs de scriere. Aceasta este o operatie asincronă de golire pe disc. Aceasta nu este potrivită
pentru operații de integritate a datelor.
SYNC_FILE_RANGE_WAIT_BEFORE (sau SYNC_FILE_RANGE_WAIT_AFTER)
Așteaptă finalizarea scrierii tuturor paginilor din intervalul specificat. Această opțiune poate
fi utilizată după o operație anterioară SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE pentru
a aștepta finalizarea acelei operații și a obține rezultatul acesteia.
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER
Aceasta este o operație de scriere pentru integritatea datelor care va asigura că toate paginile
din intervalul specificat care erau murdare când a fost apelată sync_file_range() sunt salvate pe
disc.
VALOAREA RETURNATĂ
În caz de succes, sync_file_range() returnează 0; în caz de eșec, returnează -1 și errno este
configurată pentru a indica eroarea.
ERORI-IEȘIRE
EBADF descriptor-fișier nu este un descriptor de fișier valid.
EINVAL flags specifică un bit nevalid; sau offset sau nbytes nu este valid.
EIO Eroare de In/Ieș.
ENOMEM Memorie insuficientă.
ENOSPC Spațiu pe disc insuficient.
ESPIPE fd se referă la altceva decât un fișier obișnuit, un dispozitiv bloc sau un director.
VERSIUNI
sync_file_range2()
Unele arhitecturi (de exemplu, PowerPC, ARM) necesită ca argumentele pe 64 de biți să fie aliniate într-o
pereche adecvată de registre. Pe astfel de arhitecturi, semnătura apelului sync_file_range() prezentată
în SINOPSIS ar forța irosirea unui registru ca umplutură între argumentele fd și offset. (A se vedea
syscall(2) pentru detalii.) Prin urmare, aceste arhitecturi definesc o apelare de sistem diferită care
ordonează argumentele în mod adecvat:
int sync_file_range2(int fd, unsigned int flags,
off_t offset, off_t nbytes);
Comportamentul acestui apel de sistem este în rest identic cu cel al sync_file_range().
STANDARDE
Linux.
ISTORIC
Linux 2.6.17.
sync_file_range2()
Un apel de sistem cu această semnătură a apărut pentru prima dată pe arhitectura ARM în Linux 2.6.20, cu
numele arm_sync_file_range(). A fost redenumit în Linux 2.6.22, când a fost adăugat apelul de sistem
analog pentru PowerPC. Pe arhitecturile care oferă suport glibc, glibc încorporează în mod transparent
sync_file_range2() sub numele sync_file_range().
NOTE
_FILE_OFFSET_BITS trebuie definit ca fiind 64 în codul care preia adresa sync_file_range, dacă codul este
destinat să fie portabil pe platformele tradiționale x86 și ARM pe 32 de biți, unde lățimea off_t este
implicit de 32 de biți.
CONSULTAȚI ȘI
fdatasync(2), fsync(2), msync(2), sync(2)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 2 mai 2024 sync_file_range(2)