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

标签 filesystems fuse

我在实现 readdir() 时看到一个奇怪的问题 fuse 中的功能。基本上当我做 ls在 fuse 中的任何目录上,我收到一个错误,例如:

# ls
ls: reading directory .: Input/output error
file1.c file2.c



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

在调试问题时,我注意到 fuse filler函数( fuse_fill_dir_t 作为参数传递给 readdir() )可能是导致此错误的原因。

这是因为如果我只是使用调试 printf 打印目录的内容不使用填充函数返回内容,我看不到错误。

但是一旦我开始使用填充函数返回内容,我就开始看到这个错误。

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

1) 任何人都知道为什么 filler函数可能导致这个问题?

2) 如何查找fuse_fill_dir_t 的代码定义功能?我已经查看了大多数带有这种参数的 fuse 函数,但直到现在都没有运气。

任何帮助表示赞赏!

干杯,
维奈

最佳答案

此类消息可能是由于对其他(可能未实现的)FUSE 回调的调用失败引起的,例如 getxattr() .然后readdir()被调用并获得正确的结果。

您可以使用 key -d 调试运行其可执行文件的 FUSE 文件系统。 ( Debug模式),- 不守护进程并打印有关 FUSE 调用的详细调试输出。

另外,很高兴知道您的平台是什么(Linux/OS X/etc)。

关于filesystems - 为什么 FUSE readdir 返回输入/输出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692601/

相关文章:

javascript - 将 css 文件嵌入到内部 <style> 元素中

linux-kernel - 是否将整个 inode 表加载到主内存中

c++ - 是否可以使用线程来加快文件读取速度?

curl - Databricks:将 dbfs:/FileStore 文件下载到我的本地机器?

fedora - fedora的库libfuse2和libfuse-dev是什么?

php - php 的 fuse 绑定(bind)

java - 可以在 Java 中快速完成将大量 int[] (BitSet) 数据重复读/写到文件中吗?

c++ - Fuse C++ 驱动程序 - read() 实现

python - FUSE python 问题

c - 如何为 Mac 安装 gthread-2.0?