diff --git a/9.filesystems/05_Systemes_fichiers_implementation.md b/9.filesystems/05_Systemes_fichiers_implementation.md index 8a153577f505720176f7c4a179b13b5b7aaedaa2..fa5219ecf6c6d356607bdd73a1b1f9c6347c0243 100644 --- a/9.filesystems/05_Systemes_fichiers_implementation.md +++ b/9.filesystems/05_Systemes_fichiers_implementation.md @@ -340,8 +340,14 @@ int lookup_entry(dir_inode, name) { ```c del_entry(dir_inode, name) ``` +<div style="font-size: 0.8em"> - La fonction `del_entry` supprime un fichier d'un répertoire - `del_entry` réalise une recherche linéaire de la chaîne de caractères `name` dans les entrées de répertoire (`dir_entry`) du répertoire dont l'inode est `dir_inode` : - Attention : tout comme pour `lookup_entry`, le contenu du répertoire peut-être réparti sur plusieurs blocs -- Une fois l'entrée de répertoire (`dir_entry`) trouvée, son champs inode est mis à zéro et le bloc modifié est écrit sur disque +- Une fois l'entrée de répertoire (`dir_entry`) et son numéro d'inode trouvée: + - le nombre de liens pointant vers l'inode correspondant est décrémenté; + - si le nombre de liens tombe à 0 il faut supprimer l'inode (e.g. en mettant le bit dans le bitmap d'inode à 0); + - le champ inode du `dir_entry` est mis à zéro et le bloc modifié est écrit sur disque. + +</div> \ No newline at end of file