出于学术目的,我正在搞乱一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我遇到了ext4,由于某种原因,它不会像其他原因一样工作。
我创建了两个文件夹“top”和“bottom”,并尝试操作ext4的磁盘结构,从底部返回到顶部创建某种硬链接,从而产生无限循环。
问题是,当我用ls
浏览文件系统时,它既不显示两个文件夹(虽然我只操纵了底层文件夹)或显示顶部,但在顶部,目录列表中断如下:
ls: Access to bottom not possible: I/O Error (freely translated from german)
total 2
drwxr-xr-x 3 root root 1024 Nov 14 15:49 .
drwxr-xr-x 4 root root 1024 Nov 14 15:48 ..
d????????? ? ? ? ? ? bottom
到目前为止我采取的步骤是:
ls
- >访问目录错误ls
- >访问目录错误我意识到inode和inode条目中的树范围都有哈希,但我的理解是步骤1到3不应该使这些哈希值中的任何一个无效。
我对ls
的内部工作的理解可能很低,以找出我在这里做错了什么。
有人知道我做错了什么,或者有更好的方法来实现我想做的事情吗?非常感谢帮助,因为我需要学习论文的循环。
答案 0 :(得分:1)
好的,我终于弄明白了问题所在。
在syslog中查看我发现每当浏览目录时,我都会收到以下消息:
ext4_lookup:1376: inode #12: comm ls: 'bottom' linked to parent dir
在互联网上搜索了一段时间并在IRC上询问了ext4开发人员后,我终于发现了this补丁,它是针对ext4文件系统代码的,它完全针对我试图做的事情。 不错的补丁,但无论如何你都可以做一个目录循环:
"/"
|--"top_1"
| \--"bottom_1" --> "top_2"
|
\--"top_2"
\--"bottom_2" --> "top_1"