dwww Home | Manual pages | Find package

ioctl_ficlonerange(2)         System Calls Manual        ioctl_ficlonerange(2)

NOM
       ioctl_ficlonerange, ioctl_ficlone - partager certaines données d'un fi-
       chier avec un autre fichier

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <linux/fs.h>        /* Définition des constantes 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);

DESCRIPTION
       Si un système de fichiers prend en charge le stockage physique du  par-
       tage  de  fichiers entre plusieurs fichiers (« reflink »), cette opéra-
       tion ioctl(2) peut être utilisée pour faire apparaître des  données  du
       fichier  src_fd  dans  le  fichier  dest_fd  en  partageant le stockage
       sous-jacent, ce qui est plus rapide que de faire une copie physique sé-
       parée  des  données.  Les  deux fichiers doivent se trouver sur le même
       système de fichiers. Si une écriture de fichier doit avoir lieu sur une
       région partagée, le système de fichiers doit garantir que les modifica-
       tions n’appartiennent qu’au fichier qui est écrit. On appelle générale-
       ment ce comportement la « copie sur écriture ».

       Cet  ioctl  « reflink » jusqu'à src_length octets du descripteur de fi-
       chier src_fd, à la position src_offset dans le fichier dest_fd à la po-
       sition  dest_offset,  pourvu  que  les  deux  soient  des  fichiers. Si
       src_length vaut zéro, l'ioctl « reflink » à la fin du  fichier  source.
       Ces informations vont dans une structure de la forme suivante :

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

       Les clones sont atomiques par rapport aux écritures concomitantes, vous
       n'avez donc pas besoin de poser de verrous pour avoir une copie clonée-
       cohérente.

       L'ioctl FICLONE clone des fichiers entiers.

VALEUR RENVOYÉE
       En  cas  d'erreur, la valeur de retour est -1 et errno est définie pour
       préciser l'erreur.

ERREURS
       Les codes d'erreur peuvent être, entre autres, les suivants :

       EBADF  src_fd n'est pas ouvert en lecture ; dest_fd n'est pas ouvert en
              écriture ou il n'est ouvert que pour des ajouts d'écritures ; ou
              le système de fichiers où se trouve src_fd ne gère  pas  le  re-
              flink.

       EINVAL Le  système de fichiers ne gère pas le reflink des plages de fi-
              chiers donnés. Cette erreur peut également apparaître si un des-
              cripteur  de  fichier  représente un périphérique, un FIFO ou un
              socket. Les systèmes de fichiers d'un disque nécessitent généra-
              lement  que  les  paramètres  de  la  position et de la longueur
              soient alignés sur la taille de bloc fondamentale. XFS et  Btrfs
              ne prennent pas en charge le chevauchement des plages de reflink
              dans le même fichier.

       EISDIR Un ou plusieurs fichiers sont des répertoires et le  système  de
              fichiers ne gère pas les régions partagées dans les répertoires.

       EOPNOTSUPP
              Cela  peut  apparaître  si le système de fichiers ne gère pas le
              reflink d'un descripteur de fichier ou si le descripteur se rap-
              porte à des inœuds spéciaux.

       EPERM  dest_fd est immuable.

       ETXTBSY
              Un des fichiers est un fichier d'échange. Les fichiers d'échange
              ne peuvent pas partager de stockage.

       EXDEV  dest_fd et src_fd ne sont pas sur le même  système  de  fichiers
              monté.

VERSIONS
       Ces  opérations  d'ioctl  sont  apparues pour la première fois dans Li-
       nux 4.5. Elles étaient précédemment connues en tant que BTRFS_IOC_CLONE
       et BTRFS_IOC_CLONE_RANGE, et elles étaient réservées à Btrfs.

STANDARDS
       Cette API est spécifique à Linux.

NOTES
       Une  opération de copie sur écriture nécessitant l'allocation d'un nou-
       veau stockage, l'opération fallocate(2) peut ne plus partager les blocs
       partagés  pour garantir que les écritures suivantes n'échoueront pas du
       fait d'un manque d'espace disque.

VOIR AUSSI
       ioctl(2)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Fran-
       çois  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Gué-
       rard <fevrier@tigreraye.org>, Jean-Luc  Coulon  (f5ibh)  <jean-luc.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org> et Jean-Philippe MENGUAL
       <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la        GNU        General       Public       License       version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant  les  conditions
       de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à ⟨debian-l10n-french@lists.debian.org⟩.

Pages du manuel de Linux 6.03   30 octobre 2022          ioctl_ficlonerange(2)

Generated by dwww version 1.15 on Sat Jun 29 01:46:13 CEST 2024.