2011-01-25 19 views
7

我试图询问FUSE的邮件列表,但到目前为止我还没有收到任何回复......我有几个问题。我要实现一个低级别的FUSE文件系统,并通过epoll监视fuse_chan的描述符。在Linux上用FUSE实现异步文件系统

  1. 我必须在我的文件系统中为所有 对象伪造inode? 有关于选择VFS中对象的 索引节点的任何规则(例如,我是否需要使用正值或 可以使用某些范围内的值)?

  2. 我可以使fuse_chan的描述符 非阻塞吗?如果有,请告诉我,我 是否可以假设 fuse_chan_recv()/fuse_chan_send() 将接收/发送整个请求 结构,或者我要重写他们 与功能处理部分发送 和接收?

  3. buffer size怎么样?我看到 在fuse_loop()一个新缓冲区是为每个呼叫分配的 ,所以我假设 表示缓冲区大小不固定。 但是也许有一些最大的可能的缓冲区大小 ?然后我可以分配一个更大的缓冲区并减少内存分配操作 。

+0

邪恶的。 666 ...不要使用FUSE,在Linux内核中实现适当的文件系统驱动程序。 FUSE很糟糕。 – 2011-07-14 14:26:25

回答

2

(1)Inode被定义为无符号整数,所以理论上可以使用任何值。 但是,由于可能有不小心的程序,我会安全地使用它,只使用非INT_MAX的正整数。

(2)保险丝使用特殊的内核设备。虽然fuse_chan_recv()不支持部分读取,但可能并不需要,因为内核不应该返回部分数据包。

(3)Linux中的文件名最大为4096个字符。这就限制了缓冲区大小:

$ grep PATH_MAX /usr/include/linux/limits.h 
#define PATH_MAX  4096 /* # chars in a path name including nul */