Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过操纵ext4创建目录循环_Linux_Filesystems_Ext4 - Fatal编程技术网

Linux 通过操纵ext4创建目录循环

Linux 通过操纵ext4创建目录循环,linux,filesystems,ext4,Linux,Filesystems,Ext4,出于学术目的,我正在处理一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我一直使用ext4,由于某些原因,它不能像其他的一样工作 我创建了两个文件夹“top”和“bottom”,并试图操纵ext4的磁盘结构,从下到上创建某种硬链接,从而产生一个不确定的循环 问题是,当我使用ls浏览文件系统时,它要么不显示两个文件夹(尽管我只操作了底部的文件夹),要么显示顶部,但在顶部,目录列表如下所示: ls: Access to bottom not possible: I/O Erro

出于学术目的,我正在处理一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我一直使用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表条目(条目12),查看它是否指向块3510
  • 下一个inode表条目用于bottom(条目13),请参见它指向块3511
  • 去3510号街区,让我走。和。。未触及,但将底部的inode编号更改为12
  • 尝试使用
    ls
    ->错误访问目录
  • 去3511号街区,换车。到inode 12。。到inode 2(对于根目录)
  • 尝试使用
    ls
    ->错误访问目录
  • 更改inode表中的inode条目13并使其指向块3510
  • 和往常一样的错误
  • 我意识到inode条目中的inode和区段树具有哈希和,但我的理解是,步骤1到3不应使这些哈希值中的任何一个无效。 我对
    ls
    内部工作的理解可能太低,无法找出我在这里做错了什么


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

    好的,我终于找到了问题所在

    在系统日志中查找,我发现每当浏览目录时,我都会收到以下消息:

    ext4_查找:1376:inode#12:comm ls:'bottom'链接到父目录

    在互联网上搜索了一段时间并询问了IRC上的ext4开发人员之后,我终于找到了致力于ext4文件系统代码的补丁,它正是我试图做的。 很好的补丁,但这里有一些方法可以让你得到一个目录循环:

    "/"
     |--"top_1"
     |   \--"bottom_1" --> "top_2"
     | 
     \--"top_2"
         \--"bottom_2" --> "top_1"