NOM
fallocate - Manipuler un espace de fichier
SYNOPSIS
#define _GNU_SOURCE
#include <fcntl.h>
int fallocate(int fd, int mode, off_t offset, off_t len);
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().
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.
Actuellement, un seul attribut est pris en charge pour mode :
FALLOC_FL_KEEP_SIZE
Cet attribut alloue et initialise à zéro l’espace disque de la
plage définie par offset et len. Après un appel réussi, les
écritures dans cette place sont assurées de ne pas échouer à
cause d’un manque de place sur le disque. La préallocation de
blocs initialisés à zéro au-delà de la fin de fichier est utile
pour l’optimisation de la charge de travail pour d’ajout. La
préallocation ne modifie pas la taille du fichier (comme indiqué
par stat(2)) même si elle est inférieure à offset+len.
Si l’attribut FALLOC_FL_KEEP_SIZE n’est pas spécifié dans mode, le
comportement par défaut est pratiquement le même que quand l’attribut
est spécifié. La seule différence est qu’en cas de réussite, la taille
du fichier sera modifiée si offset + len est supérieur à la taille du
fichier. Ce comportement par défaut ressemble de près au comportement
de la fonction de bibliothèque posix_fallocate(3), et est conçu comme
une méthode d’optimisation de l’implémentation de cette fonction.
Parce que l’allocation est effectuée en fragments de taille de blocs,
fallocate() peut allouer un espace plus grand que celui qui a été
spécifié.
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 Le système de fichiers contenant le fichier référencé par fd ne
gère pas cette opération.
EOPNOTSUPP
Le mode n’est pas pris en charge par le système de fichiers
contenant le fichier référencé par fd.
VERSIONS
fallocate() est disponible dans Linux depuis le noyau 2.6.23. Le glibc
le prend en charge depuis la version 2.10.
CONFORMITÉ
fallocate() est spécifique à Linux.
VOIR AUSSI
ftruncate(2), posix_fadvise(3), posix_fallocate(3)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et est maintenue par Julien Cristau
<julien.cristau@ens-lyon.org> et l’équipe francophone de traduction de
Debian.
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> ».