.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 2016, Oracle. All rights reserved.
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" .
.\" %%%LICENSE_END
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH IOCTL_FIDEDUPERANGE 2 "10 octobre 2019" Linux "Manuel du programmeur Linux"
.SH NOM
ioctl_fideduperange \- partager les données d'un fichier avec un autre
fichier
.SH SYNOPSIS
\fB#include \fP
.br
\fB#include \fP
.PP
\fBint ioctl(int \fP\fIsrc_fd\fP\fB, FIDEDUPERANGE, struct file_dedupe_range
*\fP\fIarg\fP\fB);\fP
.SH DESCRIPTION
Si un système de fichiers prend en charge le stockage physique du partage de
fichiers entre plusieurs fichiers («\ reflink\ »), cette opération \fBioctl\fP(2)
peut être utilisée pour faire apparaître des données du fichier \fIsrc_fd\fP
dans le fichier \fIdest_fd\fP en partageant le stockage sous\-jacent, si les
données du fichier sont identiques («\ déduplication\ »). Les deux fichiers
doivent se trouver sur le même système de fichiers. Cela réduit la
consommation en stockage en permettant au systè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 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\ ».
.PP
Cet ioctl accomplit l'opération «\ comparer et partager si identique\ »
jusqu'à \fIsrc_lenght\fP octets du descripteur de fichier \fIsrc_fd\fP décalé de
\fIsrc_offset\fP. Cette information est communiquée dans une structure de la
forme suivante\ :
.PP
.in +4n
.EX
struct file_dedupe_range {
__u64 src_offset;
__u64 src_length;
__u16 dest_count;
__u16 reserved1;
__u32 reserved2;
struct file_dedupe_range_info info[0];
};
.EE
.in
.PP
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.
.PP
Les champs \fIreserved1\fP et \fIreserved2\fP doivent valoir zéro.
.PP
Les destinations de l'opération de déduplication se placent dans un tableau
à la fin de la structure. Le nombre de destinations est donné dans
\fIdest_count\fP et les informations sur la destination sont transmises sous la
forme suivante\ :
.PP
.in +4n
.EX
struct file_dedupe_range_info {
__s64 dest_fd;
__u64 dest_offset;
__u64 bytes_deduped;
__s32 status;
__u32 reserved;
};
.EE
.in
.PP
Chaque opération de déduplication envoie \fIsrc_length\fP octets dans le
descripteur de fichier \fIdest_fd\fP à la position \fIdest_offset\fP. Le champ
\fIreserved\fP doit valoir zéro. Pendant l'appel, \fIsrc_fd\fP doit être ouvert en
lecture et \fIdest_fd\fP en écriture. La taille combinée du tableau des
structures \fIfile_dedupe_range\fP et \fIfile_dedupe_range_info\fP ne doit pas
dépasser la taille de la page du système. La taille maximale de
\fIsrc_length\fP 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 convention, le stockage utilisé par \fIsrc_fd\fP est associé à
\fIdest_fd\fP et le contenu précédent de \fIdest_fd\fP est libéré.
.PP
En cas de succès de cet ioctl, le nombre d'octets dédupliqués avec succès
est renvoyé dans \fIbytes_deduped\fP et un code de retour de l'opération de
déduplication est renvoyé dans \fIstatus\fP. Si un seul octet de la plage ne
correspond pas, la demande de déduplication sera ignorée et \fIstatus\fP sera
positionné sur \fBFILE_DEDUPE_RANGE_DIFFERS\fP. Le code de \fIstatus\fP est
positionné sur \fBFILE_DEDUPE_RANGE_SAME\fP en cas de succès, sur un code
d'erreur négatif en cas d'erreur, ou sur \fBFILE_DEDUPE_RANGE_DIFFERS\fP si les
données ne correspondaient pas.
.SH "VALEUR RENVOYÉE"
En cas d'erreur, la valeur de retour est \fB\-1\fP et \fIerrno\fP est définie pour
préciser l'erreur.
.SH ERREURS
Les codes d'erreur peuvent être, entre autres, les suivants\ :
.TP
\fBEBADF\fP
\fIsrc_fd\fP n'est pas ouvert en lecture\ ; \fIdest_fd\fP n'est pas ouvert en
écriture ou il n'est ouvert que pour des compléments d'écriture\ ; ou le
système de fichiers où se trouve \fIsrc_fd\fP ne gère pas la déduplication.
.TP
\fBEINVAL\fP
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.
.TP
\fBEISDIR\fP
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.
.TP
\fBENOMEM\fP
Le noyau n'a pas pu allouer assez de mémoire pour effectuer l'opération ou
\fIdest_count\fP est si grand que la description du paramètre d'entrée remplit
plus d'une page de mémoire.
.TP
\fBEOPNOTSUPP\fP
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.
.TP
\fBEPERM\fP
\fIdest_fd\fP est immuable.
.TP
\fBETXTBSY\fP
Un des fichiers est un fichier d'échange. Les fichiers d'échange ne peuvent
pas partager de stockage.
.TP
\fBEXDEV\fP
\fIdest_fd\fP et \fIsrc_fd\fP ne sont pas sur le même système de fichiers monté.
.SH 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 \fBBTRFS_IOC_FILE_EXTENT_SAME\fP et elle
était réservée à Btrfs.
.SH CONFORMITÉ
Cette API est spécifique à Linux.
.SH NOTES
Une opération de copie sur écriture nécessitant l'allocation d'un nouveau
stockage, l'opération \fBfallocate\fP(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.
.PP
Certains systèmes de fichiers peuvent limiter la quantité de données qui
peut être dédupliquée dans un seul appel.
.SH "VOIR AUSSI"
\fBioctl\fP(2)
.SH COLOPHON
Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP
Linux. Une description du projet et des instructions pour signaler des
anomalies et la dernière version de cette page peuvent être trouvées à
l'adresse \%https://www.kernel.org/doc/man\-pages/.
.PP
.SH TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess ,
Stéphan Rafin ,
Thierry Vignaud ,
François Micaux,
Alain Portal ,
Jean-Philippe Guérard ,
Jean-Luc Coulon (f5ibh) ,
Julien Cristau ,
Thomas Huriaux ,
Nicolas François ,
Florentin Duneau ,
Simon Paillard ,
Denis Barbier ,
David Prévot
et
Jean-Philippe MENGUAL
.
.PP
Cette traduction est une documentation libre ; veuillez vous reporter à la
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License version 3
.UE
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
.PP
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
.MT debian-l10n-french@lists.debian.org
.ME .