Я вижу странную проблему при реализации функции readdir()
в fuse. Обычно, когда я делаю ls
для любого каталога в fuse, я получаю такую ошибку, как:
# ls
ls: чтение каталога.: Ошибка ввода / вывода
file1.c file2.c
Но странно то, что readdir()
делает именно то, что должен делать. В том смысле, что в этом конкретном каталоге у меня есть два файла с именами file1.c
и file2.c
, и он может правильно его прочитать.
При отладке проблемы я заметил, что функция fuse filler
(fuse_fill_dir_t
переданная в качестве аргумента readdir()
) - это то, что может вызывать эту ошибку.
Это потому, что если я просто распечатываю содержимое каталога с помощью отладки printf
без возврата содержимого с помощью функции filler, я не вижу ошибки.
Но как только я начинаю использовать функцию filler для возврата содержимого, я начинаю видеть эту ошибку.
У меня есть два вопроса, связанных с этим:
1) Кто-нибудь имеет представление о том, почему функция filler
может вызывать эту проблему?
2) Как мне найти определение кода для функции fuse_fill_dir_t
? Я просмотрел большинство функций fuse с такими аргументами, но до сих пор не повезло.
Любая помощь приветствуется!
Ура,
Vinay