Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       ioctl_ficlonerange, ioctl_ficlone - partager certaines données d'un fichier 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 partage de fichiers entre plusieurs
       fichiers (« reflink »), cette opération 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 modifications n’appartiennent qu’au fichier qui est écrit. On appelle généralement
       ce comportement la « copie sur écriture ».

       Cet ioctl « reflink » jusqu'à  src_length  octets  du  descripteur  de  fichier  src_fd,  à  la  position
       src_offset dans le fichier dest_fd à la position 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éecohé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
              reflink.

       EINVAL Le  système  de  fichiers  ne gère pas le reflink des plages de fichiers donnés. Cette erreur peut
              également apparaître si un descripteur 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éralement 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 rapporte à 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é.

STANDARDS

       Linux.

HISTORIQUE

       Linux 4.5.

       Ces opérations d'ioctl étaient précédemment connues en tant que BTRFS_IOC_CLONE et  BTRFS_IOC_CLONE_RANGE
       et étaient réservées à Btrfs.

NOTES

       Une  opération  de  copie  sur  écriture  nécessitant  l'allocation  d'un  nouveau  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  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.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.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,     Denis    Barbier    <barbier@debian.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 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.8                       2 mai 2024                              ioctl_ficlonerange(2)