ioctl_ficlonerange(2) System Calls Manual ioctl_ficlonerange(2) NUME ioctl_ficlonerange, ioctl_ficlone - partajarea unor date dintr-un fiier cu un alt fiier BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include /* Definirea constantelor FICLONE* */ #include int ioctl(int dest_fd, FICLONERANGE, struct file_clone_range *arg); int ioctl(int dest_fd, FICLONE, int src_fd); DESCRIERE In cazul in care un sistem de fiiere accepta fiiere care partajeaza stocarea fizica intre mai multe fiiere (,,reflink"), aceasta operaiune ioctl(2) poate fi utilizata pentru a face ca o parte din datele din fiierul src_fd sa apara in fiierul dest_fd prin partajarea stocarii subiacente, ceea ce este mai rapid decat realizarea unei copii fizice separate a datelor. Ambele fiiere trebuie sa se afle in acelai sistem de fiiere. In cazul in care ar trebui sa aiba loc o scriere a unui fiier intr-o regiune partajata, sistemul de fiiere trebuie sa se asigure ca modificarile raman private pentru fiierul care este scris. Acest comportament este denumit in mod obinuit ,,copiere la scriere". Acest ioctl ,,reflink" cloneaza pana la src_length octei din descriptorul de fiier src_fd la poziia src_offset in fiierul dest_fdd la poziia dest_offset, cu condiia ca ambele sa fie fiiere. In cazul in care src_length este zero, ioctl ,,reflink" cloneaza la sfaritul fiierului sursa. Aceasta informaie este transmisa intr-o structura de urmatoarea forma: struct file_clone_range { __s64 src_fd; __u64 src_offset; __u64 src_length; __u64 dest_offset; }; Clonele sunt atomice in ceea ce privete scrierile simultane, astfel incat nu este necesar sa se ia nicio blocare pentru a obine o copie clonata consistenta. Ioctl-ul FICLONE cloneaza fiiere intregi. VALOAREA RETURNATA In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE Codurile de eroare pot fi unul dintre urmatoarele, dar nu se limiteaza 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-adaugare); sau sistemul de fiiere pe care se afla src_fd nu accepta ,,reflink". EINVAL Sistemul de fiiere nu suporta clonarea ,,reflink" intre intervalele de fiiere date. Aceasta eroare poate aparea, de asemenea, daca oricare dintre descriptorii de fiiere reprezinta un dispozitiv, FIFO sau soclu. In general, sistemele de fiiere de pe discuri cer ca argumentele ,,offset" (poziie) i ,,length" (lungime) sa fie aliniate la dimensiunea blocului fundamental. XFS i Btrfs nu accepta suprapunerea intervalelor de clonare ,,reflink" in acelai fiier. EISDIR Unul dintre fiiere este un director, iar sistemul de fiiere nu accepta regiuni partajate in directoare. EOPNOTSUPP Acest lucru poate aparea in cazul in care sistemul de fiiere nu accepta clonarea ,,reflink" cu oricare dintre descriptorii de fiiere sau in cazul in care oricare dintre descriptorii de fiiere se refera la noduri-i speciale. EPERM dest_fd este imuabil. ETXTBSY Unul dintre fiiere este un fiier swap. Fiierele swap nu pot partaja spaiul de stocare. EXDEV dest_fd i src_fd nu se afla pe acelai sistem de fiiere montat. STANDARDE Linux. ISTORIC Linux 4.5. Acestea erau cunoscute anterior sub numele de BTRFS_IOC_CLONE i BTRFS_IOC_CLONE_RANGE i erau private pentru Btrfs. NOTE Deoarece o operaie de copiere la scriere ,,copy-on-write" necesita alocarea de noi spaii de stocare, operaia fallocate(2) poate sa nu partajeze blocurile partajate pentru a garanta ca scrierile ulterioare nu vor eua din cauza lipsei de spaiu pe disc. CONSULTAI I ioctl(2) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 ioctl_ficlonerange(2)