gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:49:59 27 4
gpt4 key购买 nike

我在实现 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com