dwww Home | Manual pages | Find package

ioctl_fideduperange(2)        System Calls Manual       ioctl_fideduperange(2)

NOM
       ioctl_fideduperange  -  partager les 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 FIDEDUPERANGE
                                       et FILE_DEDUPE_* */
       #include <sys/stat.h>

       int ioctl(int src_fd, FIDEDUPERANGE, struct file_dedupe_range *arg);

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, si les données du fichier  sont  identiques  (« déduplica-
       tion »).  Les  deux  fichiers doivent se trouver sur le même système de
       fichiers. Cela réduit la consommation en stockage en permettant au sys-
       tème  de  ne stocker qu'une copie partagée des données. Si une écriture
       de fichier doit avoir lieu sur une région partagée, le système  de  fi-
       chiers  doit  garantir  que les modifications n’appartiennent qu’au fi-
       chier qui est écrit. On appelle généralement ce comportement la « copie
       sur écriture ».

       Cet  ioctl  accomplit l'opération « comparer et partager si identique »
       jusqu'à src_lenght octets du descripteur de fichier  src_fd  décalé  de
       src_offset.  Cette information est communiquée dans une structure de la
       forme suivante :

           struct file_dedupe_range {
               __u64 src_offset;
               __u64 src_length;
               __u16 dest_count;
               __u16 reserved1;
               __u32 reserved2;
               struct file_dedupe_range_info info[0];
           };

       La déduplication est atomique par rapport aux écritures  concomitantes,
       vous  n'avez  donc  pas besoin de poser de verrous pour avoir une copie
       dédupliquée cohérente.

       Les champs reserved1 et reserved2 doivent valoir zéro.

       Les destinations de l'opération de déduplication se placent dans un ta-
       bleau  à  la  fin  de la structure. Le nombre de destinations est donné
       dans dest_count et les informations sur la destination sont  transmises
       sous la forme suivante :

           struct file_dedupe_range_info {
               __s64 dest_fd;
               __u64 dest_offset;
               __u64 bytes_deduped;
               __s32 status;
               __u32 reserved;
           };

       Chaque opération de déduplication envoie src_length octets dans le des-
       cripteur de fichier dest_fd à la position dest_offset. Le champ  reser-
       ved  doit valoir zéro. Pendant l'appel, src_fd doit être ouvert en lec-
       ture et dest_fd en écriture. La taille combinée du tableau  des  struc-
       tures  file_dedupe_range et file_dedupe_range_info ne doit pas dépasser
       la taille de la page du système. La taille maximale de  src_length  dé-
       pend du système de fichiers et est généralement de 16 Mio. Cette limite
       sera augmentée silencieusement par le système de fichiers. Par  conven-
       tion,  le  stockage  utilisé  par  src_fd  est  associé à dest_fd et le
       contenu précédent de dest_fd est libéré.

       En cas de succès de cet ioctl, le nombre d'octets dédupliqués avec suc-
       cès  est renvoyé dans bytes_deduped et un code de retour de l'opération
       de déduplication est renvoyé dans status. Si un seul octet de la  plage
       ne  correspond  pas, la demande de déduplication sera ignorée et status
       sera positionné sur FILE_DEDUPE_RANGE_DIFFERS. Le code  de  status  est
       positionné  sur  FILE_DEDUPE_RANGE_SAME  en  cas de succès, sur un code
       d'erreur négatif en cas d'erreur, ou sur  FILE_DEDUPE_RANGE_DIFFERS  si
       les données ne correspondaient pas.

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 possibles comprennent, 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 compléments d'écri-
              ture ; ou le système de fichiers où se trouve src_fd ne gère pas
              la déduplication.

       EINVAL Le  système  de fichiers ne gère pas la déduplication des plages
              des 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.

       ENOMEM Le  noyau  n'a  pas  pu  allouer assez de mémoire pour effectuer
              l'opération ou dest_count est si grand que la description du pa-
              ramètre d'entrée remplit plus d'une page de mémoire.

       EOPNOTSUPP
              Cela  peut  apparaître  si le système de fichiers ne gère pas la
              déduplication d'un descripteur de fichier ou si  un  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é.

VERSIONS
       Cette opération ioctl est apparue pour la première fois dans Linux 4.5.
       Elle était précédemment connue sous le  nom  BTRFS_IOC_FILE_EXTENT_SAME
       et elle était réservée à 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.

       Certains systèmes de fichiers peuvent limiter la  quantité  de  données
       qui peut être dédupliquée dans un seul appel.

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_fideduperange(2)

Generated by dwww version 1.15 on Sat Jun 29 01:33:39 CEST 2024.