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

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)