在虚拟文件系统中实现符号链接

use*_*127 6 linux symlink vfs

我正在研究一个不基于磁盘的虚拟文件系统,有点像/ proc.现在我想在其中创建一个符号链接到ext3文件系统上的目标.我还没有找到任何关于如何实现这一目标的标准文档.到目前为止我猜到的是我必须编写一个函数来symlink输入struct inode_operations.但坦率地说,即使使用功能参数,我也会感到茫然.

如果重要的话,我开始使用LWN的这个教程:http://lwn.net/Articles/13325/

编辑:我正在使用libfs,而不是FUSE

use*_*127 2

我终于能够完成它了。这是我所做的(一些细节可能会有所不同,具体取决于文件系统想要实现的目标):

  1. 使用 S_IFLNK 模式创建符号链接的 inode,并将目标添加到 i_private 字段。

  2. 实现 follow_link 因为 generic_readlink 要求它存在

static void *sample_follow_link(结构 dentry *dentry,结构 nameidata *nd)
{
    nd->深度=0;
    nd_set_link(nd, (char *)dentry->d_inode->i_private);
    返回空值;
}

静态结构inode_操作sample_inode_ops = {
    .readlink = generic_readlink,
    .follow_link = 样本_follow_link,
};

……
//在dentry和inode创建函数中
inode->i_op = 样本_inode_ops