2013-11-15 25 views
2

出于学术目的,我正在搞乱一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我困在ext4由于某种原因不会像其他人一样工作。通过操作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 

我花了这么远的步骤是:

  1. 找到了顶部(项12)的索引节点inode表项,看它指向块3510
  2. 下一页inode表项是底部(条目13),看它是否指向块3511
  3. 转到块3510,让。和..原封不动但改变底部的inode数量到12
  4. 尝试访问ls目录 - >错误
  5. 转到块3511,更改。到索引节点12,..到索引节点2(用于根目录)
  6. 尝试用ls访问目录 - >错误
  7. 变化索引节点在节点表条目13,让它指向方框3510
  8. 同样的错误照常

我知道索引节点和inode条目中的范围树有hashsums,但我的理解是步骤1到3不应使这些哈希值中的任何一个无效。 我对ls内部工作的理解可能很低,以查明我在这里做错了什么。

有人知道我做错了什么,或者有没有更好的方法来实现我想要做的?非常感谢帮助,因为我需要这个循环来完成我的学士论文。

回答

1

好的,我终于明白了问题所在。

中我发现,每当浏览目录我会得到以下信息系统日志环顾四周:

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"