Provided by: manpages-fr-dev_3.65d1p1-1_all bug

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  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.  Toute
       sous-région dans l'intervalle indiqué par offset et len 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 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. L'opération est
       prise en charge notamment par les systèmes de fichiers suivants :

       *  XFS (depuis Linux 2.6.38)

       *  ext4 (depuis Linux 3.0)

       *  Btrfs (depuis Linux 3.7)

       *  tmpfs (depuis Linux 3.5)

   Réduction d'espace de fichier
       Indiquer le paramètre FALLOC_FL_COLLAPSE_RANGE (disponible depuis  Linux 3.15)  dans  mode
       supprime un intervalle d'octets d'un fichier sans laisser de trou. L'intervalle commence à
       offset et continue pendant len octets. Une fois  l'opération  terminée,  les  contenus  du
       fichier  au-délà  de  offset+len  seront  déplacés à l'emplacement offset, le fichier sera
       alors alors len octets plus court.

       Un système de fichier peut limiter la granularité de l'opération, pour conserver une  mise
       en  œuvre efficace. Typiquement, offset et len doivent être multiples de la taille de bloc
       du système de fichier,  qui  est  fonction  du  type  de  système  de  fichier  et  de  sa
       configuration.  Si  cette  exigence  est  applicable  au système de fichier mais n'est pas
       remplie, fallocate() échouera avec l'erreur EINVAL.

       Si la plage définie par offset et len atteint ou dépasse la fin du fichier, une erreur est
       renvoyée. Le fichier devrait être tronqué avec ftruncate(2).

       Aucun    autre   attribut   de   ne   peut   être   indiqué   dans   mode   en   plus   de
       FALLOC_FL_COLLAPSE_RANGE.

       Linux 3.15 prend en charge FALLOC_FL_COLLAPSE_RANGE pour ext4 (seulement pour les fichiers
       à base de domaines ou « extent ») et XFS.

VALEUR RENVOYÉE

       En cas de succès, fallocate() renvoie 0. En cas d'erreur, -1 est renvoyé et errno contient
       le code d'erreur.

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.

       EINVAL mode vaut FALLOC_FL_COLLAPSE_RANGE et la plage indiquée par offset et  len  atteint
              ou dépasse la fin du fichier.

       EINVAL mode  vaut FALLOC_FL_COLLAPSE_RANGE, mais offset ou len n'est pas un multiple de la
              taille du bloc du système de fichiers.

       EINVAL mode contient FALLOC_FL_COLLAPSE_RANGE ainsi que  d'autres  attributs,  mais  aucun
              autre attribut n'est autorisé avec FALLOC_FL_COLLAPSE_RANGE.

       EINVAL mode  vaut  FALLOC_FL_COLLAPSE_RANGE, mais le fichier référencé par fd n'est pas un
              fichier normal.

       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 ou FALLOC_FL_COLLAPSE_RANGE 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.

       ETXTBSY
              mode  indique  FALLOC_FL_COLLAPSE_RANGE,  mais  le  fichier référencé par fd est en
              cours d'exécution.

VERSIONS

       fallocate() est disponible dans Linux depuis le noyau 2.6.23. La glibc le prend en  charge
       depuis la version 2.10. Les paramètres FALLOC_FL_* ne sont définis dans les en-têtes de la
       glibc que depuis la version 2.18.

CONFORMITÉ

       fallocate() est spécifique à Linux.

VOIR AUSSI

       fallocate(1), ftruncate(2), posix_fadvise(3), posix_fallocate(3)

COLOPHON

       Cette page fait partie de la publication 3.65 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> ».