我正在编写一个 FUSE 覆盖 fs (notifyfs),它可以是一个数据库客户端可以通过查询从中获取数据。我的目的是让它成为一个缓存/overlayfs/数据库,客户端可以在显示条目及其属性(属性,还有 mimetype、图标等)时从中获取数据。
查询是获取目录的内容。已经与 notifyfs 建立连接 (=fd) 的客户端通过“list_message”请求数据。我现在的问题是如何对 notifyfs 必须给出的响应进行编程。我正在考虑三种/两种不同的方法。请注意以下事项:
notifyfs 以具有不同条目的基本形式响应,其中每个条目都是这样的:
int mode
uid_t uid
gid_t gid
size_t size
timespec ctime
timespec mtime
timespec atime
int lenname
char name[]
(调用这个 notifyfs_entry_struct)
请注意,名称的 len 不是固定的,最大为 255。Futher 客户端要求一定数量的条目,最大。我不确定这个最大值到底是多少,但应该是 80 左右。
一个。一大缓冲。大小类似于:
80 x (255+sizeof(struct notifyfs_entry_struct))
可以肯定的是,这将超过 20400 个字节。
湾。固定大小的块,使用 iovec 或 readdir 之类的东西。
什么是最好的选择?第一种方法使用至少 20400 字节的缓冲区,它很多,但它仍然可行吗?
史蒂夫