• [^] # Re: La commande mount l'accepte

    Posté par (site web personnel) . En réponse au message Pourquoi mount (le syscall) n'accepte pas un fichier ordinaire. Évalué à 1.

    Petite précision tout de même, si l'appel système mount(2) n'accepte pas les fichiers réguliers, la commande mount(8) les accepte, grâce à l'option -o loop, avec laquelle elle alloue automatiquement un périphérique boucle.

    Oui j'avais remarqué ça, même sans l'option -o loop d'ailleurs. Là, j'essaye de comprendre ce que la commande mount(2) fait avec "loop/autoclear" car umount (l'appel système et la commande) ne semble pas avoir besoin de dés-associer le fichier loopback et le fichier régulier, la-dés association semble automatique.

    La raison pour laquelle mount(2) a besoin d'un périphérique bloc, c'est qu'à mon avis le noyau doit vouloir accéder aux données du système de fichiers directement à des adresses mémoire. Un fichier régulier n'a rien de tel, à moins de le mapper en mémoire, et c'est justement ce que fait un périphérique boucle.

    Humm, intéressant. Donc dans un fichier de type bloc, on a une abstraction (tête de lecture du lecteur ou micrologiciel du SSD) pour lire à une adresse précise alors que dans un fichier normal n'a pas ça.

    Que doit faire un fichier régulier pour lire à une adresse précise ? Dans mon programme, j'utilise fseek(3) (je ne connais pas le syscall associé) pour positionner le curseur au bon endroit sans avoir besoin de tout lire. Je pense que ce qui se passe lorsque je fais un fseek dépend du système de fichier mais qu'en règle général, il a pas besoin de lire séquentiellement tout le fichier, si1 ?

    À quoi correspond l'action de mapper ? Car manifestement, il ne met pas tout en mémoire. Seulement le nœud d'index peut-être ?


    1. Je pense qu'en ext4 il doit avoir un truc qui lui dit pour l'adresse XXX tu regardes seulement ici. Le nœud d'index a des champs pour ça qui permet un accès logarithmique aux données du fichier il me semble.