【发布时间】:2013-11-29 03:09:29
【问题描述】:
出于学术目的,我正在弄乱一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我被 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
到目前为止我采取的步骤是:
- 找到top inode的inode table entry(entry 12),看它指向block 3510
- 下一个 inode 表条目是底部的(条目 13),看它指向块 3511
- 转到块 3510,让 .和 .. 不变,但将底部的 inode 编号更改为 12
- 尝试使用
ls访问目录 -> 错误 - 转到块 3511,更改 .到 inode 12,.. 到 inode 2(用于根目录)
- 尝试使用
ls访问目录 -> 错误 - 更改inode表中的inode entry 13,让它指向块3510
- 和往常一样的错误
我意识到 inode 条目中的 inode 和范围树具有哈希和,但我的理解是步骤 1 到 3 不应使这些哈希值中的任何一个无效。
我对ls 内部工作的理解可能很低,无法找出我在这里做错了什么。
有人知道我做错了什么,或者有更好的方法来实现我想要做的事情吗?非常感谢您的帮助,因为我的学士论文需要该循环。
【问题讨论】:
标签: linux filesystems ext4