Skip to topic | Skip to bottom
Home
Minfo06
Minfo06.TpAsy7r1.2 - 18 Nov 2006 - 17:54 - GuillaumeChazaraintopic end

Start of topic | Skip to actions

USFS (Ultra Simple File System)

Le but de ce TP est d'implémenter un système de fichiers, le plus simple possible. Le prochain TP marquera le début du projet, qui sera donc l'implémentation d'un système de fichiers plus évolué. Quelques liens sur les systèmes de fichiers : http://www.atnf.csiro.au/people/rgooch/linux/vfs.txt http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/vfs.html

Comme les pilotes de périphériques, les systèmes de fichiers doivent être enregistrés. Utilisez donc la fonction register_filesystem dans l'initialisation du module pour ajouter votre système de fichiers. Il va donc falloir remplir une struct file_system_type pour votre système de fichiers. Seuls name, read_super, owner et fs_flags doivent être initialisés, avec 0 comme valeur pour ce dernier attribut. Tout ceci nécessite linux/fs.h.

La méthode read_super est celle qui va initialiser le système de fichiers, elle va créer, initialiser et retourner une struct super_block. Pour l'instant, cette structure ne contiendra que la dentry (et donc l'inode) du répertoire racine. Utilisez d_alloc_root pour créer la dentry de cette inode.

L'inode est construite avec new_inode et contient toutes les informations sur le fichier ou dossier représenté : permissions, opérations, ...

USFS est un système de fichiers contenant simplement un fichier nommé usfs dont on ne peut rien faire avec. Donc, uniquement les opérations sur les dossiers seront implémentées afin de faire apparaitre usfs dans la sortie d'un ls. Pour la struct inode_operations inode->i_op, seul le lookup est implémenté afin de créer l'inode associée à une dirent. Quant à la struct file_operations inode->i_fop, ici elle ne concerne qu'un dossier vu qu'il est précisé que l'on ne peut rien faire d'utile sur les fichiers. La méthode read sera donc en fait generic_read_dir pour laisser le VFS manipuler le dossier. Le VFS appellera alors la méthode readdir qu'il faut implémenter. La méthode readdir devra donc renvoyer les entrées ".", "..", "usfs" en utilisant la fonction filldir donnée en paramètre.

Maintenant assurez vous que le système de fichiers ne reconnaisse que les fichiers qui existent "vraiment".

Pour ceux qui ont fini, vous pouvez améliorer le système de fichiers pour qu'il contienne plusieurs fichiers dont vous choisirez les noms. Le contenu de ces fichiers sera simplement leur nom.

-- GuillaumeChazarain - 07 Nov 2006
to top


You are here: Minfo06 > TpAsy7

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback