ioctl_getfsmap(2) System Calls Manual ioctl_getfsmap(2) NOM ioctl_getfsmap - recuperer la topographie physique du systeme de fichiers BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include /* Definition des constantes FS_IOC_GETFSMAP, FM?_OF_* et *FMR_OWN_* */ #include int ioctl(int fd, FS_IOC_GETFSMAP, struct fsmap_head * arg); DESCRIPTION Cette operation ioctl(2) recupere les plans de domaine (extent) d'un systeme de fichiers. Ces informations peuvent etre utilisees, entre autres, pour rechercher les fichiers associes a un bloc physique, analyser l'espace libre, ou chercher les blocs connus comme defectueux. Le seul parametre de cette operation doit etre un pointeur vers une struct fsmap_head unique : struct fsmap { __u32 fmr_device; /* ID peripherique */ __u32 fmr_flags; /* Attributs de plan */ __u64 fmr_physical; /* Adresse du segment de peripherique */ __u64 fmr_owner; /* ID du proprietaire */ __u64 fmr_offset; /* Adresse du segment de fichier */ __u64 fmr_length; /* Longueur du segment */ __u64 fmr_reserved[3]; /* Obligatoirement a zero */ }; struct fsmap_head { __u32 fmh_iflags; /* Attributs de controle */ __u32 fmh_oflags; /* Attributs de sortie */ __u32 fmh_count; /* # of entries in array incl. input */ __u32 fmh_entries; /* Nb d'entrees remplies (sortie) */ __u64 fmh_reserved[6]; /* Obligatoirement a zero */ struct fsmap fmh_keys[2]; /* Cles basse et haute pour la recherche de plan */ struct fsmap fmh_recs[]; /* Enregistrements renvoyes */ }; Les deux elements de tableau fmh_keys indiquent la cle la plus basse et la plus haute pour laquelle l'application veut les informations du plan physique par retro-representation. Une cle de retro-representation (<< retro-mapping key >>) consiste dans la sequence (peripherique, bloc, proprietaire, position). Les champs du proprietaire et de la position font partie de la cle car certains systemes de fichiers prennent en charge le partage de blocs physiques entre plusieurs fichiers, ils peuvent donc renvoyer plusieurs associations pour un bloc physique donne. Les plans des systemes de fichiers sont copies dans un tableau fmh_recs, qui suit immediatement les donnees d'en-tete. Champs de la structure fsmap_head Le champ fmh_iflags est un masque de bit passe au noyau pour modifier la sortie. Aucun attribut n'est actuellement defini, l'appelant doit donc positionner cette valeur a zero. Le champ fmh_oflags est un masque de bit d'attributs positionnes par le noyau concernant les plans renvoyes. Si FMH_OF_DEV_T est positionne, le champ fmr_device represente une structure dev_t contenant les numeros majeur et mineur du peripherique bloc. Le champ fmh_count contient le nombre d'elements du tableau a passer au noyau. Si cette valeur vaut 0, fmh_entries sera positionne au nombre d'enregistrements qui auraient ete renvoyes avec un tableau plus grand ; aucune information de plan ne sera renvoyee. Le champ fmh_entries contient le nombre d'elements du tableau fmh_recs qui contiennent des informations utiles. Le champ fmh_reserved doit etre positionne a zero. Cles Les deux enregistrements de cles fsmap_head.fmh_keys indiquent les enregistrements de domaines le plus bas et le plus haut de l'espace de cles (keyspace) pour lequel l'appelant a demande le renvoi. Un systeme de fichiers qui peut partager des blocs entre les fichiers exige probablement la serie (device, physical, owner, offset, flags) pour n'indexer que les enregistrements de plan de systeme de fichiers. Les systemes de fichiers classiques qui ne permettent pas ce partage pourraient identifier n'importe quel enregistrement avec uniquement (device, physical, flags). Par exemple, si la cle basse est positionnee sur (8:0, 36864, 0, 0, 0), le systeme de fichiers ne renverra que les enregistrements des domaines commencant ou se trouvant apres 36 Kio sur le disque. Si la cle haute est positionnee sur (8:0, 1048576, 0, 0, 0), seuls les enregistrements inferieurs a 1 Mio seront renvoyes. Le format de fmr_device dans les cles doit correspondre au format de ces memes champs dans les enregistrements de sortie, comme defini ci-dessous. Par convention, le champ fsmap_head.fmh_keys[0] doit contenir la cle basse et le champ fsmap_head.fmh_keys[1] la cle haute pour la requete. Par commodite, si fmr_length est positionne dans la cle basse, il sera ajoute en fonction a fmr_block ou a fmr_offset. L'appelant peut tirer parti de cette subtilite en positionnant les appels suivants a travers la copie de fsmap_head.fmh_recs[fsmap_head.fmh_entries - 1] dans la cle basse. La fonction fsmap_advance (definie dans linux/fsmap.h) fournit cette possibilite. Champs de la structure fsmap Le champ fmr_device identifie uniquement le peripherique de stockage sous-jacent. Si l'attribut FMH_OF_DEV_T est positionne dans le champ fmh_oflags de l'en-tete, ce champ contient un dev_t a partir duquel les numeros majeur et mineur peuvent etre extraits. Si l'attribut n'est pas positionne, ce champ contient une valeur qui doit etre unique pour chaque peripherique de stockage. Le champ fmr_physical contient l'adresse sur le disque du domaine en octets. Le champ fmr_owner contient le proprietaire du domaine. Il s'agit d'un numero d'inoeud, sauf si FMR_OF_SPECIAL_OWNER est positionne dans le champ fmr_flags, auquel cas la valeur est determinee par le systeme de fichiers. Voir la section ci-dessous concernant les valeurs du proprietaire pour plus de details. 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 positionnes 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'etat du domaine. Les bits sont : FMR_OF_PREALLOC Le domaine est alloue mais pas encore ecrit. FMR_OF_ATTR_FORK Ce domaine contient des donnees d'attributs etendus. FMR_OF_EXTENT_MAP Ce domaine contient des informations sur le plan de domaine pour le proprietaire. FMR_OF_SHARED Certaines parties de ce domaine peuvent etre partagees. FMR_OF_SPECIAL_OWNER Le champ fmr_owner contient une valeur speciale et non un numero d'inoeud. FMR_OF_LAST Il s'agit du dernier enregistrement du jeu de donnees. Le champ fmr_reserved sera positionne a zero. valeur du proprietaire Generalement, la valeur du champ fmr_owner pour les domaines qui ne sont pas des metadonnees devrait etre un numero d'inoeud. Cependant, les systemes de fichiers ne sont pas obliges de signaler les numeros d'inoeud ; ils peuvent plutot renvoyer FMR_OWN_UNKNOWN si le numero d'inoeud ne peut pas etre recupere facilement, si l'appelant n'a pas assez de privileges, si le systeme de fichiers ne gere pas les numeros d'inoeud stables, ou pour toute autre raison. Si un systeme de fichiers souhaite conditionner l'envoi des numeros d'inoeuds aux capacites du processus, il est fortement recommande d'utiliser la capacite CAP_SYS_ADMIN a cette fin. Les valeurs speciales de proprietaire suivantes sont communes a tous les systemes de fichiers : FMR_OWN_FREE Espace libre. FMR_OWN_UNKNOWN Ce domaine est utilise mais son proprietaire n'est pas connu ou n'est pas facilement recuperable. FMR_OWN_METADATA Ce domaine est une metadonnee d'un systeme de fichiers. XFS peut renvoyer les valeurs speciales de proprietaire suivantes : XFS_FMR_OWN_FREE Espace libre. XFS_FMR_OWN_UNKNOWN Ce domaine est utilise mais son proprietaire n'est pas connu ou n'est pas facilement recuperable. XFS_FMR_OWN_FS Les metadonnees de systeme de fichiers statiques qui existent a une adresse fixe. Il s'agit de superblocs AG et des en-tetes AGF, AGFL et AGI. XFS_FMR_OWN_LOG Le journal du systeme de fichiers. XFS_FMR_OWN_AG Metadonnees du groupe d'allocation telles que les btrees de l'espace libre ou du retro-plan. XFS_FMR_OWN_INOBT L'inoeud et les btrees de l'inoeud libre. XFS_FMR_OWN_INODES Enregistrements de l'inoeud. XFS_FMR_OWN_REFC Informations du compte de reference. XFS_FMR_OWN_COW Ce domaine est utilise pour preparer une copie sur ecriture. XFS_FMR_OWN_DEFECTIVE: Cette extension a ete marquee comme etant defectueuse, soit par le systeme de fichiers, soit par le peripherique sous-jacent. ext4 peut renvoyer les valeurs speciales de proprietaire : EXT4_FMR_OWN_FREE Espace libre. EXT4_FMR_OWN_UNKNOWN Ce domaine est utilise mais son proprietaire n'est pas connu ou n'est pas facilement recuperable. EXT4_FMR_OWN_FS Metadonnees du systeme de fichiers statiques qui existent a une adresse fixe. Il s'agit du superbloc et des descripteurs de groupe. EXT4_FMR_OWN_LOG Le journal du systeme de fichiers. EXT4_FMR_OWN_INODES Enregistrements de l'inoeud. EXT4_FMR_OWN_BLKBM Plan de bit de bloc. EXT4_FMR_OWN_INOBM Plan de bit d'inoeud. VALEUR RENVOYEE En cas d'erreur, la valeur de retour est -1 et errno est definie pour preciser l'erreur. ERREURS L'erreur inscrite dans errno peut etre, entre autres, une des suivantes : EBADF fd n'est pas ouvert en lecture. EBADMSG Le systeme de fichiers a detecte une erreur de somme de controle dans les metadonnees. EFAULT Le pointeur fourni ne correspond a aucune adresse memoire valable. EINVAL Le tableau n'est pas assez long, les cles ne pointent pas vers une partie valable du systeme de fichiers, la cle basse pointe vers un point de l'espace d'adresses de stockage physique du systeme de fichiers plus eleve que la cle haute ou une valeur non nulle a ete inscrite dans un champ qui doit contenir zero. ENOMEM Pas assez de memoire pour traiter la requete. EOPNOTSUPP Le systeme de fichiers ne prend pas en charge cette commande. EUCLEAN Les metadonnees du systeme de fichiers sont corrompues et doivent etre reparees. STANDARDS Linux. Tous les systemes de fichiers ne la gerent pas. HISTORIQUE Linux 4.12. EXEMPLES Voir io/fsmap.c dans les xfsprogs pour un programme d'exemple. VOIR AUSSI ioctl(2) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 ioctl_getfsmap(2)