linux - 重启后linux内核中消失的dentries
问题描述
我正在尝试通过内核创建一大块 vfs,这个函数在我的模块中创建目录。我的代码看起来:
struct dentry *dentry;
struct path path;
int err, lookup;
lookup = LOOKUP_DIRECTORY | LOOKUP_REVAL;
mode |= S_IFDIR;
dentry = kern_path_create(AT_FDCWD, name, &path, lookup);
if (IS_ERR(dentry))
{
return PTR_ERR(dentry);
}
err = vfs_mkdir(d_inode(path.dentry), dentry, mode);
if (err)
{
}
done_path_create(&path, dentry);
return err;
重启前
f1 <- 目录
f2 <- 目录(子目录 f1)
f3 <- 目录(子目录 f1)
重新启动后 vfs 树在 struct dentry 中消失。
f1 <- 目录
为了得到这个输出,我使用了:
err = kern_path(FULL_MAIN_DIR_NAME, LOOKUP_FOLLOW, &tmp_root);
printk(KERN_DEBUG "%s <- dir\n",tmp_root.dentry->d_name.name );
list_for_each_entry(tmp_dentry, &tmp_root.dentry->d_subdirs, d_child)
{
if (tmp_dentry->d_name.name)
{
printk(KERN_INFO "%s <- dir (subdir f1)\n", tmp_dentry->d_name.name);
}
}
但是系统中仍然存在目录,我可以正常使用它们。另一方面,附加到它们的 struct inode_operations 也会被清除。有人知道如何解决这个问题吗?
解决方案
推荐阅读
- r - 由 / 分隔的嵌套列表的列
- php - Wordpress wp_send_json_success() 成功返回 undefined
- sql - 连接两个表以保留选定的值和空值
- python - 终端找不到 PyCharm 中导入的模块
- python - 获取主键 django 的问题
- swift - 如何在swiftui中修改传递给活动工作表的变量
- java - 这段代码如何遍历 HashMap 的 Integer 值?
- java - Spring Boot REST - 即使具有唯一路径变量,映射也不明确
- ios - 跨 SwiftUI 应用程序共享数据:更好的模式选择?
- mongodb - 使用 Mongo Compass 访问在 WSL2 中的 docker 上运行的 mongo 数据库