Linux kernel 获取绑定安装';使用内核API的源代码
假设Linux kernel 获取绑定安装';使用内核API的源代码,linux-kernel,filepath,kernel-module,Linux Kernel,Filepath,Kernel Module,假设sda1上的文件系统如下所示: / fedora/ ubuntu/ / boot/ bin/ dev/ etc/ home/ owner/ lib/ mnt/ boot/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ lib/ containers/ box/ root/ / a
sda1
上的文件系统如下所示:
/
fedora/
ubuntu/
/
boot/
bin/
dev/
etc/
home/
owner/
lib/
mnt/
boot/
opt/
proc/
root/
run/
sbin/
srv/
sys/
tmp/
usr/
var/
lib/
containers/
box/
root/
/
app/
bin/
lib/
sbin/
user/
sda2上的文件系统如下所示:
/
fedora/
ubuntu/
/
boot/
bin/
dev/
etc/
home/
owner/
lib/
mnt/
boot/
opt/
proc/
root/
run/
sbin/
srv/
sys/
tmp/
usr/
var/
lib/
containers/
box/
root/
/
app/
bin/
lib/
sbin/
user/
sda3上的文件系统如下所示:
/
fedora/
ubuntu/
/
boot/
bin/
dev/
etc/
home/
owner/
lib/
mnt/
boot/
opt/
proc/
root/
run/
sbin/
srv/
sys/
tmp/
usr/
var/
lib/
containers/
box/
root/
/
app/
bin/
lib/
sbin/
user/
文件系统的装载如下所示:
mount /dev/sda2 /
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /var/lib/containers/box/root
还执行了多个绑定安装:
mount --bind /mnt/boot/ubuntu /boot
mount --bind /home/owner /var/lib/containers/box/root/user
现在,如果给定一个文件
结构,我如何在它所在的文件系统上检索它相应的完整路径?如果我有I/boot/grub
,那么结果应该是/ubuntu/grub
。如果我有/var/lib/containers/box/root/user
,那么我应该只知道通过以下方式解决此问题:
文件
struct关联的文件名(我的内存对此不清楚)文件
结构的源文件系统的设备号(我不知道从哪里开始获取)dentry
结构(file.f_path.dentry
)dentry
结构的父dentry
结构或dentry
结构(dentry.d\u parent
)dentry
struct下面的设备号(我不知道从哪里开始获取)dentry
struct的对应名称前置到保存的字符串,如果设备编号匹配,则返回步骤4;如果设备编号不匹配,则停止/proc/PID/mountinfo
显示底层文件系统上装载源的路径,必须有另一种方式