.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved .\" Written by Dave Chinner .\" .\" %%%LICENSE_START(GPLv2_ONELINE) .\" May be distributed as per GNU General Public License version 2. .\" %%%LICENSE_END .\" .\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE .\" 2011-09-19: Substantial restructuring of the page .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH FALLOCATE 2 "19 novembre 2019" Linux "Manuel du programmeur Linux" .SH NOM fallocate \- Manipuler un espace de fichier .SH SYNOPSIS .nf \fB#define _GNU_SOURCE\fP /* Consultez feature_test_macros(7) */ \fB#include \fP .PP \fBint fallocate(int \fP\fIfd\fP\fB, int \fP\fImode\fP\fB, off_t \fP\fIoffset\fP\fB, off_t \fP\fIlen\fP\fB);\fP .fi .SH DESCRIPTION C'est un appel système spécifique à Linux et non portable. Pour la méthode portable, spécifiée par POSIX.1, pour assurer que de l'espace est alloué pour un fichier, consultez \fBposix_fallocate\fP(3). .PP \fBfallocate\fP() permet à l'appelant de manipuler directement l'espace disque alloué pour le fichier référencé par \fIfd\fP pour la plage d'octets débutant à \fIoffset\fP et de longueur \fIlen\fP octets. .PP Le paramètre \fImode\fP définit l'opération à effectuer sur la plage donnée. Les sous\-sections suivantes apportent des précisions sur les opérations prises en charge. .SS "Allocation d'espace disque." L'opération par défaut (c'est\-à\-dire si \fImode\fP est zéro) de \fBfallocate\fP() alloue l'espace disque dans l'intervalle indiqué par \fIoffset\fP et \fIlen\fP. La taille du fichier (comme indiquée par \fBstat\fP(2)) sera modifiée si \fIoffset\fP+\fIlen\fP est supérieur à la taille du fichier. Toute sous\-région dans l'intervalle indiqué par \fIoffset\fP et \fIlen\fP sera initialisée à zéro si elle ne contient pas de données au moment de l'appel. Ce comportement par défaut ressemble beaucoup au comportement de la fonction de bibliothèque \fBposix_fallocate\fP(3), et est conçu comme une méthode d'implémentation optimisée de cette fonction. .PP Après un appel réussi, les écritures suivantes dans l'intervalle indiqué par \fIoffset\fP et \fIlen\fP seront garanties sans échec dû à un manque d'espace disque. .PP Si l'attribut \fBFALLOC_FL_KEEP_SIZE\fP est indiqué dans \fImode\fP, le comportement de l'appel est similaire, mais la taille du fichier ne sera pas modifiée si \fIoffset\fP+\fIlen\fP est supérieur à la taille du fichier. L'allocation préalable de blocs mis à zéro après la fin du fichier de cette façon permet d'optimiser la charge de travail d'ajout. .PP Si l'attribut \fBFALLOC_FL_UNSHARE\fP est indiqué dans \fImode\fP, les extensions de données du fichier partagé seront privées pour le fichier afin de garantir que l'écriture suivante n'échouera pas du fait d'un manque d'espace. Généralement, cela se fera par une opération copy\-on\-write sur toutes les données partagées du fichier. Cet attribut peut ne pas être pris en charge par tous les systèmes de fichiers. .PP Parce que l'allocation est effectuée en fragments de taille de blocs, \fBfallocate\fP() peut allouer un espace de disque plus grand que celui qui a été indiqué. .SS "Désallocation d'espace de fichier" Indiquer le paramètre \fBFALLOC_FL_PUNCH_HOLE\fP (disponible depuis Linux\ 2.6.38) dans \fImode\fP désalloue l'espace (c'est\-à\-dire crée un trou) dans l'intervalle d'octets commençant à \fIoffset\fP et continuant pendant \fIlen\fP\ octets. Dans l'espace indiqué, les blocs incomplets du système de fichiers sont mis à zéro et tous les blocs du système de fichiers sont retirés du fichier. Après un appel réussi, les lectures suivantes dans cet intervalle renverront des zéros. .PP Le paramètre \fBFALLOC_FL_PUNCH_HOLE\fP doit être inclus avec \fBFALLOC_FL_KEEP_SIZE\fP dans \fImode\fP (avec un OU binaire)\ ; autrement dit, même en faisant des trous après la fin du fichier, la taille du fichier (comme indiquée par \fBstat\fP(2)) ne changera pas. .PP Les systèmes de fichiers ne prennent pas tous \fBFALLOC_FL_PUNCH_HOLE\fP en charge\ ; si un système de fichiers n'accepte pas l'opération, une erreur est renvoyée. L'opération est prise en charge notamment par les systèmes de fichiers suivants\ : .IP * 3 XFS (depuis Linux 2.6.38) .IP * .\" commit a4bb6b64e39abc0e41ca077725f2a72c868e7622 ext4 (depuis Linux 3.0) .IP * Btrfs (depuis Linux 3.7) .IP * .\" commit 83e4fa9c16e4af7122e31be3eca5d57881d236fe \fBtmpfs\fP(5) (depuis Linux 3.5) .IP * .\" commit 4e56a6411fbce6f859566e17298114c2434391a4 \fBgfs2\fP(5) (depuis Linux 4.16) .SS "Réduction d'espace de fichier" .\" commit 00f5e61998dd17f5375d9dfc01331f104b83f841 Indiquer le paramètre \fBFALLOC_FL_COLLAPSE_RANGE\fP (disponible depuis Linux\ 3.15) dans \fImode\fP supprime un intervalle d'octets d'un fichier sans laisser de trou. L'intervalle commence à \fIoffset\fP et continue pendant \fIlen\fP\ octets. Une fois l'opération terminée, le contenu du fichier au\-delà de \fIoffset+len\fP est déplacé à l'emplacement \fIoffset\fP, le fichier sera alors \fIlen\fP\ octets plus court. .PP Un système de fichiers peut limiter la granularité de l'opération, pour garantir une implémentation efficace. Typiquement, \fIoffset\fP et \fIlen\fP doivent être multiples de la taille de bloc du système de fichiers, qui est en fonction du type de système de fichiers et de sa configuration. Si cette exigence est applicable au système de fichiers mais n'est pas remplie, \fBfallocate\fP() échouera avec l'erreur \fBEINVAL\fP. .PP Si la plage définie par \fIoffset\fP et \fIlen\fP atteint ou dépasse la fin du fichier, une erreur est renvoyée. Le fichier devrait être tronqué avec \fBftruncate\fP(2). .PP Aucun autre attribut de ne peut être indiqué dans \fImode\fP en plus de \fBFALLOC_FL_COLLAPSE_RANGE\fP. .PP .\" commit 9eb79482a97152930b113b51dff530aba9e28c8e .\" commit e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d Linux\ 3.15 prend en charge \fBFALLOC_FL_COLLAPSE_RANGE\fP pour ext4 (seulement pour les fichiers à base de domaines ou «\ extent\ ») et XFS. .SS "Initialisation d'espace de fichier" .\" commit 409332b65d3ed8cfa7a8030f1e9d52f372219642 Indiquer le paramètre \fBFALLOC_FL_ZERO_RANGE\fP (disponible depuis Linux\ 3.15) dans \fImode\fP met à zéro l'espace dans l'intervalle d'octets commençant à \fIoffset\fP et continuant pendant \fIlen\fP\ octets. Dans l'intervalle indiqué, les blocs sont préalloués pour les zones qui couvrent les trous du fichier. Après un appel réussi, les lectures suivantes dans cet intervalle renverront des zéros. .PP L’initialisation est réalisée dans le système de fichiers de préférence en convertissant l’intervalle en «\ extents\ » non écrits. Cette approche signifie que l’intervalle indiqué ne sera pas physiquement initialisé sur le périphérique (à part les blocs partiels aux extrémités de l’intervalle) et qu’une entrée ou sortie n’est (sinon) nécessaire que pour mettre à jour les métadonnées. .PP Si l'attribut \fBFALLOC_FL_KEEP_SIZE\fP est également indiqué dans \fImode\fP, le comportement de l'appel est similaire, mais la taille du fichier ne sera pas modifiée si \fIoffset\fP+\fIlen\fP est supérieur à la taille du fichier. Le comportement est le même lorsque de l'espace est préalloué et que \fBFALLOC_FL_KEEP_SIZE\fP est indiqué. .PP Les systèmes de fichiers ne prennent pas tous \fBFALLOC_FL_ZERO_RANGE\fP en charge\ ; si un système de fichiers n'accepte pas l'opération, une erreur est renvoyée. L'opération est prise en charge notamment par les systèmes de fichiers suivants\ : .IP * 3 .\" commit 376ba313147b4172f3e8cf620b9fb591f3e8cdfa XFS (depuis Linux\ 3.15) .IP * .\" commit b8a8684502a0fc852afa0056c6bb2a9273f6fcc0 ext4, pour les fichiers à base de domaines («\ extent\ ») (depuis Linux 3.15) .IP * .\" commit 30175628bf7f521e9ee31ac98fa6d6fe7441a556 SMB3 (depuis Linux\ 3.17) .IP * .\" commit f27451f229966874a8793995b8e6b74326d125df Btrfs (depuis Linux 4.16) .SS "Augmenter l'espace de fichier" .\" commit dd46c787788d5bf5b974729d43e4c405814a4c7d Indiquer le paramètre \fBFALLOC_FL_INSERT_RANGE\fP (disponible depuis Linux\ 4.1) dans \fImode\fP augmente l'espace d'un fichier en insérant un trou dans la taille du fichier sans effacer de données. Le trou commencera à \fIoffset\fP et continuera pendant \fIlen\fP\ octets. Lors de l'insertion d'un trou dans un fichier, le contenu du fichier à partir de \fIoffset\fP sera décalé vers le haut (à savoir vers la position du fichier supérieure) de \fIlen\fP octets. L'insertion d'un trou dans un fichier augmente sa taille de \fIlen\fP octets. .PP Ce mode a les mêmes limites que \fBFALLOC_FL_COLLAPSE_RANGE\fP concernant la granularité des opérations. Si les exigences de granularité ne sont pas satisfaites, \fBfallocate\fP() échoue avec l'erreur \fBEINVAL\fP. Si \fIoffset\fP est égal ou supérieur à la fin du fichier, une erreur est renvoyée. Pour de telles opérations (à savoir l'insertion d'un trou à la fin du fichier), \fBftruncate\fP(2) doit être utilisé. .PP Aucun autre attribut ne peut être indiqué dans \fImode\fP en plus de \fBFALLOC_FL_INSERT_RANGE\fP. .PP .\" commit a904b1ca5751faf5ece8600e18cd3b674afcca1b .\" commit 331573febb6a224bc50322e3670da326cb7f4cfc .\" f2fs also has support since Linux 4.2 .\" commit f62185d0e283e9d311e3ac1020f159d95f0aab39 \fBFALLOC_FL_INSERT_RANGE\fP requiert une prise en charge par le système de fichiers. Les systèmes de fichiers qui gèrent cette opération comprennent XFS (dans Linux 4.1) et ext4 (depuis Linux 4.2). .SH "VALEUR RENVOYÉE" En cas de succès, \fBfallocate\fP() renvoie \fB0\fP. En cas d'erreur, \fB\-1\fP est renvoyé et \fIerrno\fP contient le code d'erreur. .SH ERREURS .TP \fBEBADF\fP \fIfd\fP n'est pas un descripteur de fichier valable ou n'est pas ouvert en écriture. .TP \fBEFBIG\fP \fIoffset\fP+\fIlen\fP excède la taille maximale du fichier. .TP \fBEFBIG\fP \fImode\fP vaut \fBFALLOC_FL_INSERT_RANGE\fP et la taille du fichier + \fIlen\fP dépasse la taille maximale du fichier. .TP \fBEINTR\fP Un signal a été capturé pendant l'exécution\ ; voir \fBsignal\fP(7). .TP \fBEINVAL\fP .\" FIXME . (raise a kernel bug) Probably the len==0 case should be .\" a no-op, rather than an error. That would be consistent with .\" similar APIs for the len==0 case. .\" See "Re: [PATCH] fallocate.2: add FALLOC_FL_PUNCH_HOLE flag definition" .\" 21 Sep 2012 .\" http://thread.gmane.org/gmane.linux.file-systems/48331/focus=1193526 \fIoffset\fP était inférieur à 0, ou \fIlen\fP était inférieur ou égal à 0. .TP \fBEINVAL\fP \fImode\fP vaut \fBFALLOC_FL_COLLAPSE_RANGE\fP et la plage indiquée par \fIoffset\fP et \fIlen\fP atteint ou dépasse la fin du fichier. .TP \fBEINVAL\fP \fImode\fP vaut \fBFALLOC_FL_INSERT_RANGE\fP et la plage indiquée par \fIoffset\fP atteint ou dépasse la fin du fichier. .TP \fBEINVAL\fP \fImode\fP vaut \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_INSERT_RANGE\fP, mais \fIoffset\fP ou \fIlen\fP n'est pas un multiple de la taille du bloc du système de fichiers. .TP \fBEINVAL\fP \fImode\fP contient \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_INSERT_RANGE\fP ainsi que d'autres attributs, mais aucun autre attribut n'est autorisé avec \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_INSERT_RANGE\fP. .TP \fBEINVAL\fP .\" There was an inconsistency in 3.15-rc1, that should be resolved so that all .\" filesystems use this error for this case. (Tytso says ex4 will change.) .\" http://thread.gmane.org/gmane.comp.file-systems.xfs.general/60485/focus=5521 .\" From: Michael Kerrisk (man-pages .\" Subject: Re: [PATCH v5 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate .\" Newsgroups: gmane.linux.man, gmane.linux.file-systems .\" Date: 2014-04-17 13:40:05 GMT \fImode\fP vaut \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_ZERO_RANGE\fP, mais le fichier référencé par \fIfd\fP n'est pas un fichier normal. .TP \fBEIO\fP Une erreur d'entrée\-sortie s'est produite durant la lecture ou l'écriture sur un système de fichiers. .TP \fBENODEV\fP \fIfd\fP ne fait pas référence à un fichier régulier ou un répertoire (si \fIfd\fP est un tube ou une FIFO, une erreur différente en résultera). .TP \fBENOSPC\fP Il n'y a pas suffisamment d'espace disponible sur le périphérique où se trouve le fichier référencé par \fIfd\fP. .TP \fBENOSYS\fP Ce noyau ne met pas en œuvre \fBfallocate\fP(). .TP \fBEOPNOTSUPP\fP Le système de fichiers contenant le fichier référencé par \fIfd\fP ne gère pas cette opération, ou le \fImode\fP n'est pas pris en charge par le système de fichiers contenant le fichier référencé par \fIfd\fP. .TP \fBEPERM\fP Le fichier auquel se réfère \fIfd\fP est marqué comme immuable (voir \fBchattr\fP(1)). .TP \fBEPERM\fP \fImode\fP indique \fBFALLOC_FL_PUNCH_HOLE\fP, \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_INSERT_RANGE\fP et le fichier auquel se réfère \fIfd\fP est marqué en ajout uniquement (consulter \fBchattr\fP(1)). .TP \fBEPERM\fP La lecture a été interrompue par un signal\ ; consultez \fBfnctl\fP(2). .TP \fBESPIPE\fP \fIfd\fP fait référence à un tube ou une FIFO. .TP \fBETXTBSY\fP \fImode\fP indique \fBFALLOC_FL_COLLAPSE_RANGE\fP ou \fBFALLOC_FL_INSERT_RANGE\fP, mais le fichier référencé par \fIfd\fP est en cours d'exécution. .SH VERSIONS .\" See http://sourceware.org/bugzilla/show_bug.cgi?id=14964 \fBfallocate\fP() est disponible dans Linux depuis le noyau 2.6.23. La glibc le prend en charge depuis la version 2.10. Les paramètres \fBFALLOC_FL_*\fP ne sont définis dans les en\-têtes de la glibc que depuis la version\ 2.18. .SH CONFORMITÉ \fBfallocate\fP() est spécifique à Linux. .SH "VOIR AUSSI" \fBfallocate\fP(1), \fBftruncate\fP(2), \fBposix_fadvise\fP(3), \fBposix_fallocate\fP(3) .SH COLOPHON Cette page fait partie de la publication\ 5.04 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/. .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 . 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. 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 .