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é.