Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       ioctl_getfsmap - récupérer la topographie physique du système de fichiers

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <linux/fsmap.h>  /* Définition des constantes FS_IOC_GETFSMAP,
                                    FM?_OF_* et *FMR_OWN_* */
       #include <sys/ioctl.h>

       int ioctl(int fd, FS_IOC_GETFSMAP, struct fsmap_head * arg);

DESCRIPTION

       Cette  opération ioctl(2) récupère les plans de domaine (extent) d'un système de fichiers.
       Ces informations peuvent être  utilisées,  entre  autres,  pour  rechercher  les  fichiers
       associés  à  un bloc physique, analyser l'espace libre, ou chercher les blocs connus comme
       défectueux.

       Le seul paramètre de cette opération doit être un  pointeur  vers  une  struct  fsmap_head
       unique :

           struct fsmap {
               __u32 fmr_device;      /* ID périphérique */
               __u32 fmr_flags;       /* Attributs de plan */
               __u64 fmr_physical;    /* Adresse du segment de périphérique */
               __u64 fmr_owner;       /* ID du propriétaire */
               __u64 fmr_offset;      /* Adresse du segment de fichier */
               __u64 fmr_length;      /* Longueur du segment */
               __u64 fmr_reserved[3]; /* Obligatoirement à zéro */
           };

           struct fsmap_head {
               __u32 fmh_iflags;       /* Attributs de contrôle */
               __u32 fmh_oflags;       /* Attributs de sortie */
               __u32 fmh_count;        /* # of entries in array incl. input */
               __u32 fmh_entries;      /* Nb d’entrées remplies (sortie) */
               __u64 fmh_reserved[6];  /* Obligatoirement à zéro */

               struct fsmap fmh_keys[2];  /* Clés basse et haute pour
                                             la recherche de plan */
               struct fsmap fmh_recs[];   /* Enregistrements renvoyés */
           };

       Les deux éléments de tableau fmh_keys indiquent la clé la plus basse et la plus haute pour
       laquelle l'application veut les informations du plan  physique  par  rétro-représentation.
       Une  clé  de  rétro-représentation  (« retro-mapping  key »)  consiste  dans  la  séquence
       (périphérique, bloc, propriétaire, position). Les champs du propriétaire et de la position
       font  partie  de la clé car certains systèmes de fichiers prennent en charge le partage de
       blocs physiques entre plusieurs fichiers, ils peuvent donc renvoyer plusieurs associations
       pour un bloc physique donné.

       Les  plans  des  systèmes  de  fichiers  sont  copiés  dans  un tableau fmh_recs, qui suit
       immédiatement les données d'en-tête.

   Champs de la structure fsmap_head
       Le champ fmh_iflags est un masque de bit passé au noyau pour  modifier  la  sortie.  Aucun
       attribut n'est actuellement défini, l'appelant doit donc positionner cette valeur à zéro.

       Le  champ  fmh_oflags est un masque de bit d'attributs positionnés par le noyau concernant
       les plans renvoyés. Si FMH_OF_DEV_T est positionné, le  champ  fmr_device  représente  une
       structure dev_t contenant les numéros majeur et mineur du périphérique bloc.

       Le  champ  fmh_count  contient le nombre d'éléments du tableau à passer au noyau. Si cette
       valeur vaut 0, fmh_entries sera positionné au nombre d'enregistrements  qui  auraient  été
       renvoyés avec un tableau plus grand ; aucune information de plan ne sera renvoyée.

       Le champ fmh_entries contient le nombre d'éléments du tableau fmh_recs qui contiennent des
       informations utiles.

       Le champ fmh_reserved doit être positionné à zéro.

   Clés
       Les deux enregistrements de clés  fsmap_head.fmh_keys  indiquent  les  enregistrements  de
       domaines le plus bas et le plus haut de l'espace de clés (keyspace) pour lequel l'appelant
       a demandé le renvoi. Un système de fichiers qui peut partager des blocs entre les fichiers
       exige  probablement  la  série (device, physical, owner, offset, flags) pour n'indexer que
       les enregistrements de plan de système de fichiers. Les systèmes  de  fichiers  classiques
       qui  ne permettent pas ce partage pourraient identifier n'importe quel enregistrement avec
       uniquement (device, physical, flags). Par exemple, si la clé  basse  est  positionnée  sur
       (8:0,  36864,  0,  0,  0),  le système de fichiers ne renverra que les enregistrements des
       domaines commençant ou se trouvant après 36 Kio  sur  le  disque.  Si  la  clé  haute  est
       positionnée  sur  (8:0,  1048576,  0,  0, 0), seuls les enregistrements inférieurs à 1 Mio
       seront renvoyés. Le format de fmr_device dans les clés doit correspondre au format de  ces
       mêmes  champs dans les enregistrements de sortie, comme défini ci-dessous. Par convention,
       le   champ   fsmap_head.fmh_keys[0]   doit   contenir   la   clé   basse   et   le   champ
       fsmap_head.fmh_keys[1] la clé haute pour la requête.

       Par  commodité, si fmr_length est positionné dans la clé basse, il sera ajouté en fonction
       à  fmr_block  ou  à  fmr_offset.  L'appelant  peut  tirer  parti  de  cette  subtilité  en
       positionnant      les      appels      suivants      à     travers     la     copie     de
       fsmap_head.fmh_recs[fsmap_head.fmh_entries - 1]   dans   la   clé   basse.   La   fonction
       fsmap_advance (définie dans linux/fsmap.h) fournit cette possibilité.

   Champs de la structure fsmap
       Le  champ  fmr_device  identifie  uniquement  le  périphérique de stockage sous-jacent. Si
       l'attribut FMH_OF_DEV_T est positionné dans le champ fmh_oflags  de  l'en-tête,  ce  champ
       contient  un  dev_t à partir duquel les numéros majeur et mineur peuvent être extraits. Si
       l'attribut n'est pas positionné, ce champ contient une valeur qui doit  être  unique  pour
       chaque périphérique de stockage.

       Le champ fmr_physical contient l'adresse sur le disque du domaine en octets.

       Le  champ  fmr_owner  contient  le propriétaire du domaine. Il s'agit d'un numéro d'inœud,
       sauf si FMR_OF_SPECIAL_OWNER est positionné dans le champ fmr_flags, auquel cas la  valeur
       est  déterminée  par  le  système  de  fichiers. Voir la section ci-dessous concernant les
       valeurs du propriétaire pour plus de détails.

       Le champ fmr_offset contient l'adresse logique sur l'enregistrement du plan en octets.  Ce
       champ  n'a  aucun  sens  si  les  attributs FMR_OF_SPECIAL_OWNER ou FMR_OF_EXTENT_MAP sont
       positionnés dans fmr_flags.

       Le champ fmr_length contient la longueur du domaine en octets.

       Le champ fmr_flags est un masque de bit des attributs d'état du domaine. Les bits sont :

           FMR_OF_PREALLOC
                  Le domaine est alloué mais pas encore écrit.

           FMR_OF_ATTR_FORK
                  Ce domaine contient des données d'attributs étendus.

           FMR_OF_EXTENT_MAP
                  Ce  domaine  contient  des  informations  sur  le  plan  de  domaine  pour   le
                  propriétaire.

           FMR_OF_SHARED
                  Certaines parties de ce domaine peuvent être partagées.

           FMR_OF_SPECIAL_OWNER
                  Le champ fmr_owner contient une valeur spéciale et non un numéro d'inœud.

           FMR_OF_LAST
                  Il s'agit du dernier enregistrement du jeu de données.

       Le champ fmr_reserved sera positionné à zéro.

   valeur du propriétaire
       Généralement,  la  valeur  du  champ  fmr_owner  pour  les  domaines  qui  ne sont pas des
       métadonnées devrait être un numéro d'inœud. Cependant, les systèmes de  fichiers  ne  sont
       pas  obligés de signaler les numéros d'inœud ; ils peuvent plutôt renvoyer FMR_OWN_UNKNOWN
       si le numéro d'inœud ne peut pas être récupéré facilement, si l'appelant n'a pas assez  de
       privilèges,  si  le  système  de fichiers ne gère pas les numéros d'inœud stables, ou pour
       toute autre raison. Si un système de fichiers souhaite conditionner  l'envoi  des  numéros
       d'inœuds  aux  capacités  du processus, il est fortement recommandé d'utiliser la capacité
       CAP_SYS_ADMIN à cette fin.

       Les valeurs spéciales de propriétaire suivantes sont  communes  à  tous  les  systèmes  de
       fichiers :

           FMR_OWN_FREE
                  Espace libre.

           FMR_OWN_UNKNOWN
                  Ce  domaine  est  utilisé  mais  son  propriétaire n'est pas connu ou n’est pas
                  facilement récupérable.

           FMR_OWN_METADATA
                  Ce domaine est une métadonnée d'un système de fichiers.

       XFS peut renvoyer les valeurs spéciales de propriétaire suivantes :

           XFS_FMR_OWN_FREE
                  Espace libre.

           XFS_FMR_OWN_UNKNOWN
                  Ce domaine est utilisé mais son propriétaire  n'est  pas  connu  ou  n’est  pas
                  facilement récupérable.

           XFS_FMR_OWN_FS
                  Les  métadonnées  de  système  de fichiers statiques qui existent à une adresse
                  fixe. Il s'agit de superblocs AG et des en-têtes AGF, AGFL et AGI.

           XFS_FMR_OWN_LOG
                  Le journal du système de fichiers.

           XFS_FMR_OWN_AG
                  Métadonnées du groupe d'allocation telles que les btrees de l'espace  libre  ou
                  du rétro-plan.

           XFS_FMR_OWN_INOBT
                  L'inœud et les btrees de l'inœud libre.

           XFS_FMR_OWN_INODES
                  Enregistrements de l'inœud.

           XFS_FMR_OWN_REFC
                  Informations du compte de référence.

           XFS_FMR_OWN_COW
                  Ce domaine est utilisé pour préparer une copie sur écriture.

           XFS_FMR_OWN_DEFECTIVE:
                  Cette  extension  a été marquée comme étant défectueuse, soit par le système de
                  fichiers, soit par le périphérique sous-jacent.

       ext4 peut renvoyer les valeurs spéciales de propriétaire :

           EXT4_FMR_OWN_FREE
                  Espace libre.

           EXT4_FMR_OWN_UNKNOWN
                  Ce domaine est utilisé mais son propriétaire  n'est  pas  connu  ou  n’est  pas
                  facilement récupérable.

           EXT4_FMR_OWN_FS
                  Métadonnées  du  système de fichiers statiques qui existent à une adresse fixe.
                  Il s'agit du superbloc et des descripteurs de groupe.

           EXT4_FMR_OWN_LOG
                  Le journal du système de fichiers.

           EXT4_FMR_OWN_INODES
                  Enregistrements de l'inœud.

           EXT4_FMR_OWN_BLKBM
                  Plan de bit de bloc.

           EXT4_FMR_OWN_INOBM
                  Plan de bit d'inœud.

VALEUR RENVOYÉE

       En cas d'erreur, la valeur de retour est -1 et errno est définie pour préciser l'erreur.

ERREURS

       L'erreur inscrite dans errno peut être, entre autres, une des suivantes :

       EBADF  fd n'est pas ouvert en lecture.

       EBADMSG
              Le système de fichiers  a  détecté  une  erreur  de  somme  de  contrôle  dans  les
              métadonnées.

       EFAULT Le pointeur fourni ne correspond à aucune adresse mémoire valable.

       EINVAL Le  tableau  n'est pas assez long, les clés ne pointent pas vers une partie valable
              du système de fichiers, la clé basse pointe vers un point de l'espace d'adresses de
              stockage  physique du système de fichiers plus élevé que la clé haute ou une valeur
              non nulle a été inscrite dans un champ qui doit contenir zéro.

       ENOMEM Pas assez de mémoire pour traiter la requête.

       EOPNOTSUPP
              Le système de fichiers ne prend pas en charge cette commande.

       EUCLEAN
              Les métadonnées du système de fichiers sont corrompues et doivent être réparées.

VERSIONS

       L'opération FS_IOC_GETFSMAP est apparue pour la première fois dans Linux 4.12.

STANDARDS

       Cette API est spécifique à Linux. Tous les systèmes de fichiers ne la gèrent pas.

EXEMPLES

       Voir io/fsmap.c dans les xfsprogs pour un programme d'exemple.

VOIR AUSSI

       ioctl(2)

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier  <barbier@debian.org>,  David  Prévot <david@tilapin.org> et Jean-Philippe MENGUAL
       <jpmengual@debian.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.