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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.