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

NUME

       ioctl_ficlonerange, ioctl_ficlone - partajarea unor date dintr-un fișier cu un alt fișier

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <linux/fs.h>        /* Definirea constantelor FICLONE* */
       #include <sys/ioctl.h>

       int ioctl(int dest_fd, FICLONERANGE, struct file_clone_range *arg);
       int ioctl(int dest_fd, FICLONE, int src_fd);

DESCRIERE

       În  cazul  în  care  un sistem de fișiere acceptă fișiere care partajează stocarea fizică între mai multe
       fișiere („reflink”), această operațiune ioctl(2) poate fi utilizată pentru a face ca o parte  din  datele
       din  fișierul  src_fd  să apară în fișierul dest_fd prin partajarea stocării subiacente, ceea ce este mai
       rapid decât realizarea unei copii fizice separate a datelor.   Ambele  fișiere  trebuie  să  se  afle  în
       același sistem de fișiere.  În cazul în care ar trebui să aibă loc o scriere a unui fișier într-o regiune
       partajată,  sistemul  de fișiere trebuie să se asigure că modificările rămân private pentru fișierul care
       este scris.  Acest comportament este denumit în mod obișnuit „copiere la scriere”.

       Acest ioctl „reflink” clonează până la src_length octeți din descriptorul de  fișier  src_fd  la  poziția
       src_offset  în  fișierul dest_fdd la poziția dest_offset, cu condiția ca ambele să fie fișiere.  În cazul
       în care src_length este zero, ioctl „reflink” clonează la sfârșitul fișierului sursă.  Această informație
       este transmisă într-o structură de următoarea formă:

           struct file_clone_range {
               __s64 src_fd;
               __u64 src_offset;
               __u64 src_length;
               __u64 dest_offset;
           };

       Clonele sunt atomice în ceea ce privește scrierile simultane, astfel încât nu este necesar să se ia nicio
       blocare pentru a obține o copie clonată consistentă.

       Ioctl-ul FICLONE clonează fișiere întregi.

VALOAREA RETURNATĂ

       În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI

       Codurile de eroare pot fi unul dintre următoarele, dar nu se limitează la acestea:

       EBADF  src_fd nu este deschis pentru citire; dest_fd nu este deschis pentru scriere sau este deschis doar
              pentru scriere de tip „append-only” (doar-adăugare); sau sistemul  de  fișiere  pe  care  se  află
              src_fd nu acceptă „reflink”.

       EINVAL Sistemul  de  fișiere  nu  suportă  clonarea „reflink” între intervalele de fișiere date.  Această
              eroare poate apărea, de asemenea, dacă  oricare  dintre  descriptorii  de  fișiere  reprezintă  un
              dispozitiv,  FIFO  sau  soclu.   În general, sistemele de fișiere de pe discuri cer ca argumentele
              „offset” (poziție) și „length” (lungime) să fie aliniate la dimensiunea blocului fundamental.  XFS
              și Btrfs nu acceptă suprapunerea intervalelor de clonare „reflink” în același fișier.

       EISDIR Unul dintre fișiere este un director, iar sistemul de fișiere  nu  acceptă  regiuni  partajate  în
              directoare.

       EOPNOTSUPP
              Acest  lucru  poate  apărea  în cazul în care sistemul de fișiere nu acceptă clonarea „reflink” cu
              oricare dintre descriptorii de fișiere sau în cazul în care oricare dintre descriptorii de fișiere
              se referă la noduri-i speciale.

       EPERM  dest_fd este imuabil.

       ETXTBSY
              Unul dintre fișiere este un fișier swap.  Fișierele swap nu pot partaja spațiul de stocare.

       EXDEV  dest_fd și src_fd nu se află pe același sistem de fișiere montat.

VERSIUNI

       Aceste operații ioctl au apărut pentru prima dată în Linux 4.5.  Ele erau cunoscute anterior  sub  numele
       de BTRFS_IOC_CLONE și BTRFS_IOC_CLONE_RANGE și erau private pentru Btrfs.

STANDARDE

       Această API (interfață de programare a aplicațiilor) este specifică pentru Linux.

NOTE

       Deoarece  o  operație  de  copiere la scriere „copy-on-write” necesită alocarea de noi spații de stocare,
       operația fallocate(2) poate să nu partajeze blocurile partajate pentru a garanta că scrierile  ulterioare
       nu vor eșua din cauza lipsei de spațiu pe disc.

CONSULTAȚI ȘI

       ioctl(2)

TRADUCERE

       Traducerea    în   limba   română   a   acestui   manual   a   fost   creată   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.03                  30 octombrie 2022                          ioctl_ficlonerange(2)