Provided by: manpages-fr-dev_4.13-4_all 

NOM
ioctl_getfsmap - récupérer la topographie physique du système de fichiers
SYNOPSIS
#include <sys/ioctl.h>
#include <linux/fs.h>
#include <linux/fsmap.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.
CONFORMITÉ
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)
COLOPHON
Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à
l'adresse https://www.kernel.org/doc/man-pages/.
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 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.
Linux 9 juin 2020 IOCTL_GETFSMAP(2)