2011-07-14 9 views
5

Estoy viendo un problema extraño al implementar la funcionalidad readdir() en el fusible. Básicamente cuando lo haga 'ls' en cualquier directorio en el fusible, me sale un error como:readdir de fusible devuelve error de entrada/salida

ls

ls: directorio de lectura:. Error de entrada/salida

Archivo1.c Archivo2.c

Pero lo extraño es que readdir está haciendo exactamente lo que se supone que debe hacer. En el sentido de que en ese directorio en particular, tengo dos archivos llamados 'archivo1.c' y 'archivo2.c' y es capaz de leerlo correctamente.

Mientras se depura el tema me di cuenta de que la función de fusible 'relleno' ('fuse_fill_dir_t' pasa como argumento a readdir()) es lo que puede ser la causa de este error.

Esto se debe a que si simplemente imprimo los contenidos del directorio utilizando una impresión de depuración sin devolver los contenidos utilizando la función de relleno, no veo el error.

Pero apenas empiezo a usar la función de relleno para devolver el contenido, empiezo a ver este error.

tengo dos preguntas relacionadas con esta:

1) Alguien tiene alguna idea de por qué la función de relleno podría estar causando este problema?

2) ¿Cómo busco la definición del código para la función fuse_fill_dir_t? He revisado la mayoría de las funciones de fusibles con ese tipo de argumentos, pero no he tenido suerte hasta ahora.

¡Se agradece cualquier ayuda!

Saludos, Vinay

Respuesta

1

Tales mensajes pueden ser causados ​​por llamadas fallidas a otros (posiblemente no implementados) devoluciones de llamada FUSE como getxattr(). Luego se llama al readdir() y los resultados se obtienen a la derecha.

puede depurar un sistema de archivos FUSIBLE correr su ejecutable con (modo de depuración) clave -d, - que no daemonize proceso y grabados se detalla la salida de depuración acerca de las llamadas de fusibles.

Además, sería bueno saber cuál es su plataforma (Linux/OS X/etc).

+0

Tengo la misma pregunta en OS X. –

Cuestiones relacionadas