FALLOCATE(2)

NOM
fallocate - Manipuler des espaces de fichiers

SYNOPSIS
#include <linux/falloc.h>
long fallocate(int fd, int mode, loff_t offset, loff_t len);

DESCRIPTION
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. L'argument 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 des charges 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
fallocate() renvoie zéro s'il réussit, ou un code d'erreur s'il échoue. Veuillez noter que errno n'est pas renseignée.

ERREURS

EBADF
    fd n'est pas un descripteur de fichier valide, 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 pendant la lecture ou l'écriture sur le 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 prend pas en charge cette opération.

EOPNOTSUPP
    Le mode n'est pas pris en charge par le système de fichier contenant le fichier référencé par fd.

VERSIONS
fallocate() est disponible sous Linux depuis le noyau 2.6.23.

CONFORMITÉ
fallocate() est spécifique à Linux.

VOIR AUSSI
ftruncate(2), posix_fadvise(3), posix_fallocate(3)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 22 décembre 2007 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 fallocate ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.