J'essaie de comprendre le chemin du noyau Linux. Comment le ci-dessous le cas résolu:chemin du noyau Linux marche. lookup_slow explication
Pour le chemin,
"/ ext3_dir/ext4_dir"
Disons que nous avons suivant les systèmes de fichiers montés, ext4_dir est la racine du système de fichiers ext4, monté sur ext3_dir annuaire ext3. Q1: Est-il possible qu'à tout moment dentry pour ext4_dir ne soit pas présent sur le cache dentry ou il sera toujours là après ext4 monté au-dessus de ext3?
Q2: Si dcache cas de manque est alors possible dans le chemin lent ci-dessous:
link_path_walk->walk_component->lookup_slow()
premier dentry est attribué
dentry = d_alloc_parallel(dir, name, &wq);
et nous appelons
inode->i_op->lookup(inode, dentry, flags);
qui appelle la fonction réelle du système de fichiers pour lire le composant dans les blocs de données de l'inode du répertoire parent, ici ext3_dir. Puisque ext3_dir est dans le système de fichiers ext3, comment accéder au système de fichiers ext4 dans ce cas pour lire les données de ext4_dir dans dentry?
Merci, Kapil
Merci Tsyvarev pour la réponse. savez-vous aussi comment est-ce mandaté, je veux dire comment épingler la racine dentry à dcache. – Kapil
Je ne suis pas sûr, mais dentry a un champ de compteur de référence 'd_lockref'. Ainsi, en incrémentant ce compteur, VFS empêche Dentry de quitter le cache. Dans tous les cas, épingler root dentry est une tâche pour VFS, les pilotes de systèmes de fichiers ne sont pas impliqués dans cela. – Tsyvarev