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

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)