Filesystems 为什么FUSE readdir返回输入/输出错误?

Filesystems 为什么FUSE readdir返回输入/输出错误?,filesystems,fuse,Filesystems,Fuse,在fuse中实现readdir()功能时,我发现了一个奇怪的问题。基本上,当我在fuse中的任何目录上执行ls操作时,会出现如下错误: #ls ls:正在读取目录。:输入/输出错误 file1.c file2.c 但奇怪的是,readdir()正在做它应该做的事情。在这个特定的目录中,我有两个文件名为file1.c和file2.c,它能够正确地读取它 调试该问题时,我注意到fusefiller函数(fuse\u fill\u dir\u t作为参数传递给readdir())可能是导致此错误的原因

在fuse中实现
readdir()
功能时,我发现了一个奇怪的问题。基本上,当我在fuse中的任何目录上执行
ls
操作时,会出现如下错误:

#ls
ls:正在读取目录。:输入/输出错误
file1.c file2.c

但奇怪的是,
readdir()
正在做它应该做的事情。在这个特定的目录中,我有两个文件名为
file1.c
file2.c
,它能够正确地读取它

调试该问题时,我注意到fuse
filler
函数(
fuse\u fill\u dir\u t
作为参数传递给
readdir()
)可能是导致此错误的原因

这是因为如果我只是使用debug
printf
打印目录的内容,而不使用filler函数返回内容,我看不到错误

但一旦我开始使用filler函数返回内容,我就会看到这个错误

我有两个与此相关的问题:

1) 有人知道为什么
filler
函数会导致这个问题吗

2) 如何查找
fuse\u fill\u dir\t
函数的代码定义?我已经看过了大多数带有这种参数的fuse函数,但到目前为止都没有运气

感谢您的帮助

干杯,
Vinay

此类消息可能是由于对其他(可能未实现的)FUSE回调的调用失败引起的,如
getxattr()
。然后调用
readdir()

您可以使用键
-d
(调试模式)调试运行其可执行文件的FUSE文件系统,该键不会对进程进行后台监控,并打印有关FUSE调用的详细调试输出


另外,了解您的平台(Linux/OSX/etc)也很好

我在OSX中也有同样的问题。