2009-03-02 19 views
5

Actualmente estoy tratando de obtener un inodo para un nombre de ruta dado en una función kernel. Todo lo que tengo disponible es la ruta completa. He intentado intentos como:Obteniendo el inodo de la ruta en Linux Kernel

user_path_at(AT_FDCWD, buffer, LOOKUP_FOLLOW, &path); 

Pero la dentry en esa ruta determinada no es válida, parece que resulta. Entonces pensé quizás intentar con stat() y obtener el número de inodo de eso. Sin embargo, eso solo me da un número, no un inóculo de estructura. No sé de una manera de convertir un número de inodo a un inodo sin agarrar un inodo existente y atravesar la lista completa de inodos. Y ni siquiera sé si eso funcionaría. Pero ciertamente no quiero hacer eso.

¿Hay alguna manera simple de obtener un inodo struct de un nombre de ruta char * dentro del kernel?

Respuesta

0

No hay una manera fácil ya que struct inode es parte del núcleo y usted está en el espacio de usuario. Todo depende de la implementación particular del sistema de archivos. ¿Estás seguro de que la información en stat struct no es suficiente para tus necesidades?

De todos modos, this link podría ayudar.

+1

Me acaba de llegar (después de aproximadamente 3 horas) que stat() será suficiente para mis necesidades, ya que solo necesito la información. Me empeñé tanto en obtener el inodo que perdí parte de mi objetivo. Y estoy haciendo esto desde el kernel. Entonces, realizar stat() no es óptimo en realidad, pero funcionará. –

+0

El enlace está muerto. Es por eso que las respuestas solo de enlace son malas. – MSalters

2

stat() le dará el inode de un archivo en el campo "st_ino".

Disculpe, inicial malentendido de la pregunta.

Si desea la estructura del inodo real dentro del kernel, estoy bastante seguro de que el núcleo no recorrerá una matriz o lista buscando el número de inodo (a menos que la lista sea muy pequeña). Como el código del kernel está disponible públicamente, debería poder averiguar cómo lo hace y luego hacer lo mismo.

+0

Ya lo noté en mi publicación. Sin embargo, eso solo me da el número de inodo, no la estructura necesaria para obtener la información sobre el archivo. –

Cuestiones relacionadas