- 论坛徽章:
- 0
|
回复 8# zylthinking
谢谢您的帮助
1.page->mapping->host, 既然你的 page 是从文件来的,那应该能得到一个 inode, 就是不知道这个 inode 是你主机的还是虚拟机上的, 看你的 page 数据哪个上面的而定, 而且这个 inode 也不保证不是另一个设备的宁恰好相同 ino 的文件
2.下面两个能得到 page 所来自文件的设备的挂载点及文件的 dentry, 可以利用这个一直上溯到 /, 能拼一个全路径出来, vma 是从 page 的虚拟地址的来的,
同样不知道得到的是你主机上的全路径还是虚拟机上的, 应该同样看你这个 page 是哪里的而定
vma->vm_file->f_vfsmnt
vma->vm_file->f_dentry
我的疑问,
第一个,我想到的也是这个方法。能找到inode,但是不知道inode的编号。现在内核改了,以前的inode有个成员保存inode number信息的。所以现在的问题就是通过inode获取inode number。
第二个,这样的话效率太低。不太可行。
现在我的想法是,1 通过page找到inode 然后找到inode number,就知道是不是了。这里存在不同文件系统的inode number相同的情况,概率较低。可以暂时忽略。
2 在文件被打开时,用户层的文件打开是调用 filp_open 这个函数,通过文件打开调用的函数,要是能获得inode number的话,可以在哪里判断inode number是否是要找的那个文件,然后在address_space 结构中flag 一下。 在page中 再检验address_space 是否被flag了。
|
|