2013-11-15 26 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"