我正在开发一个模块来读取文件xattributes
。我迷上了sys_open
,由于这个原因,我需要在不打开文件的情况下获取文件的dentry
。简而言之,我有inode
和绝对路径,但无法弄清楚;如何从这些获得dentry
。所有意见都非常感谢。如何从inode/pathname找到一个dentry?
回答
按我低估了你正在尝试开放的回调函数期间从您的驱动器模块的目录项路径。如果是这样;然后在放下之前添加访问dentry信息所需的结构列表。
include/linux/fs.h
Struct file{
struct path f_path;
};
include/linux/path.h
struct path {
struct vfsmount *mnt;
struct dentry *dentry;
};
include/linux/dcache.h
struct dentry {
};
所以你可以这样做。
static int sample_open(struct inode *inode, struct file *file)
{
char *path, *dentry,*par_dentry;
char buff[256];
dentry = file->f_path.dentry->d_iname;
pr_info("dentry :%s\n",dentry);
par_dentry = file->f_path.dentry->d_parent->d_iname;
pr_info("parent dentry :%s\n",par_dentry);
path=dentry_path_raw(file->f_path.dentry,buff,256);
pr_info("Dentry path %s\n",path);
}
我们实际上试图获得来自文件路径的dentry结构。我们需要它来访问属于该文件的dentry中的xattributes。我们不需要dentry路径本身 –
@BenAtkinson我不明白。 ***你的意思是通过获得dentry结构***。你是否正在寻找像'custom_structure-> mydent = file-> f_path.dentry;'或者其他更类似于你自定义函数的dentry结构? –
问题是错误的。扩展属性存储在inode中,因此只要有inode,您就可以访问它们。
我挂钩了sys_open,因此我需要在不打开文件的情况下得到 文件的dentry。
这是错误的2个帐户。
- SYS_OPEN不是能打开一个文件的唯一地方。
- 就算你勾搭成所有的地方,你执行额外的查找可以找到一个不同文件比得到了打开了一个(考虑一个小丑做CP文件1 toopen; CP FIL2在一个循环toopen)
你想要的是使用LSM框架(Linux安全模块)。具体见security_file_open。
但是,鉴于问题的质量,我不得不问这是什么。这是一个大学项目吗?我认为你没有准备好开发它,并且建议尽可能转换为非内核版本。
- 1. 文件查找和dentry缓存
- 2. 如何找到一个从我的iPhone
- 3. Linux Kernel dentry和inode
- 4. 如何找到一个TreeViewItem
- 5. 如何找到一个ndarray
- 6. 如何从一个下拉标签找到一个下拉值
- 7. 从另一个类找到一个object.member
- 8. PHP如何找到一条直线从一个文本文件
- 9. 如何找到从
- 10. 如何从一个绝对到另一个找到相对的文件路径?
- 11. 如何找到一个元素
- 12. 如何找到一个LPCSTR的长度
- 13. 如何找到一个select查询
- 14. 如何找到一个__m128(F32vec4)
- 15. 如何找到一个字符串
- 16. 如何找到一个HTML元素
- 17. 如何找到一个数据库表
- 18. Flash Professional如何找到一个类
- 19. 树java如何找到一个词
- 20. cmake如何找到一个包?
- 21. 如何得到一个查找()/查询
- 22. 如何找到一个列表元素
- 23. C++ find_if - 如何找到一个ID(INT(
- 24. 如何找到在一个列表
- 25. 如何找到一个向无环图
- 26. 如何找到一个Java类
- 27. 如何找到在一个数组
- 28. wxpython如何找到一个wx.ListCtrl范围
- 29. 如何找到一个mac地址?
- 30. 我如何找到一个字符
http://stackoverflow.com/questions/8556461/how-to-obtain-a-pathname-or-dentry-or-struct-file-from-a-given-inode – ilansch