我正在研究一个不基于磁盘的虚拟文件系统,有点像/ proc.现在我想在其中创建一个符号链接到ext3文件系统上的目标.我还没有找到任何关于如何实现这一目标的标准文档.到目前为止我猜到的是我必须编写一个函数来symlink输入struct inode_operations.但坦率地说,即使使用功能参数,我也会感到茫然.
如果重要的话,我开始使用LWN的这个教程:http://lwn.net/Articles/13325/
编辑:我正在使用libfs,而不是FUSE
我终于能够完成它了。这是我所做的(一些细节可能会有所不同,具体取决于文件系统想要实现的目标):
使用 S_IFLNK 模式创建符号链接的 inode,并将目标添加到 i_private 字段。
实现 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