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.