我正在研究一些 Linux 内核的东西,我有一个名为 /dev/blah/whatever 的假路径,它指向 /dev/block/real_device
问题是lookup_bdev将无法遵循符号链接,因此我想通过获取真实路径(/dev/block/real_device)来预先处理路径,以便我可以将其交给lookup_bdev,以便它成功返回而不是错误。
或者任何其他可以正确检索给定初始路径的 block_device 信息的内核调用。
Thanks
为此使用 VFS 层(特别是 dcache/nameidata)。
#include <linux/namei.h>
#include <linux/dcache.h>
...
struct path path;
char buf[256];
char* ptr;
int err = kern_path("/dev/disk/by-id/dm-name-lkdevel-root",
LOOKUP_FOLLOW, &path);
if(!err) {
ptr = d_path(&path, buf, 256);
if(!IS_ERR(ptr)) {
/* ptr contains real path */
}
}
这是在 vanilla Linux 3.12 上测试的
注意d_path()
对于特殊文件系统和附加可能会返回奇怪的结果(deleted)
已删除文件的后缀。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)