NOM¶
fallocate - Manipuler un espace de fichier
SYNOPSIS¶
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <fcntl.h>
int fallocate(int fd, int mode, off_t offset, off_t len);
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
posix_fallocate(3).
fallocate() permet à l'appelant de manipuler directement l'espace
disque alloué pour le fichier référencé par
fd pour
la plage d'octets débutant à
offset et de longueur
len
octets.
Le paramètre
mode 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.
Allocation d'espace disque.¶
L'opération par défaut (c'est-à-dire si
mode est
zéro) de
fallocate() alloue et initialise à zéro
l'espace disque dans l'intervalle indiqué par
offset et
len. La taille du fichier (comme indiquée par
stat(2)) sera
modifiée si
offset+
len est supérieur à la taille
du fichier. Ce comportement par défaut ressemble beaucoup au comportement
de la fonction de bibliothèque
posix_fallocate(3), et est
conçu comme une méthode d'implémentation optimisée de
cette fonction.
Après un appel réussi, les écritures suivantes dans l'intervalle
indiqué par
offset et
len seront garanties sans échec
dû à un manque d'espace disque.
Si l'attribut
FALLOC_FL_KEEP_SIZE est indiqué dans
mode, le
comportement de l'appel est similaire, mais la taille du fichier ne sera pas
modifiée si
offset+
len 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.
Parce que l'allocation est effectuée en fragments de taille de blocs,
fallocate() peut allouer un espace de disque plus grand que celui qui a
été indiqué.
Désallocation d'espace de fichier¶
Indiquer le paramètre
FALLOC_FL_PUNCH_HOLE (disponible depuis
Linux 2.6.38) dans
mode désalloue l'espace (c'est-à-dire
crée un trou) dans l'intervalle d'octets commençant à
offset et continuant pendant
len octets. Dans l'espace
indiqué, les blocs partiels de systèmes de fichiers sont mis à
zéro et les blocs complets de systèmes de fichiers sont retirés
du fichier. Après un appel réussi, les lectures suivantes dans cet
intervalle renverront des zéros.
Le paramètre
FALLOC_FL_PUNCH_HOLE doit être inclus avec
FALLOC_FL_KEEP_SIZE dans
mode (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
stat(2)) ne changera pas.
Les systèmes de fichiers ne prennent pas tous
FALLOC_FL_PUNCH_HOLE
en charge ; si un système de fichiers n'accepte pas
l'opération, une erreur est renvoyée.
VALEUR RENVOYÉE¶
La fonction
fallocate() renvoie zéro en cas de réussite et -1
en cas d'échec.
ERREURS¶
- EBADF
- fd n'est pas un descripteur de fichier valable ou
n'est pas ouvert en écriture.
- EFBIG
- offset+len excède la taille maximum de
fichier.
- EINTR
- Un signal a été capturé pendant
l'exécution.
- EINVAL
- offset était inférieur à 0, ou
len était inférieur ou égal à 0.
- EIO
- Une erreur d'entrée-sortie s'est produite durant la
lecture ou l'écriture sur un système de fichiers.
- ENODEV
- fd ne fait pas référence à un fichier
régulier ou un répertoire (si fd est un tube ou une FIFO,
une erreur différente en résultera).
- ENOSPC
- Il n'y a pas suffisamment d'espace disponible sur le
périphérique où se trouve le fichier
référencé par fd.
- ENOSYS
- Ce noyau ne met pas en œuvre fallocate().
- EOPNOTSUPP
- Le système de fichiers contenant le fichier
référencé par fd ne gère pas cette
opération, ou le mode n'est pas pris en charge par le
système de fichiers contenant le fichier référencé par
fd.
- EPERM
- Le fichier indiqué par fd est marqué
immuable (consultez chattr(1)). Ou : mode indique
FALLOC_FL_PUNCH_HOLE et le fichier indiqué par fd est
marqué en ajout uniquement (consulter chattr(1)).
- ESPIPE
- fd fait référence à un tube ou une
FIFO.
VERSIONS¶
fallocate() est disponible dans Linux depuis le noyau 2.6.23. Le glibc le
prend en charge depuis la version 2.10.
fallocate() est spécifique à Linux.
VOIR AUSSI¶
ftruncate(2),
posix_fadvise(3),
posix_fallocate(3)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Julien Cristau et l'équipe francophone de traduction de
Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».