dot dot

觀察 ext4 的行為,會發現 ... 的 inode 數字分別是
當前的 directory 跟 parent directory.

從實作上可以參考這部分的程式碼

./namei.c:2842:struct ext4_dir_entry_2 *ext4_init_dot_dotdot(struct inode *inode,

用 trace-cmd (ftrace) 來測試 mkdir

 $ sudo trace-cmd record -l ext4_* -p function_graph
 $ trace-cmd report | less

可以知道 function call 的傳遞是

ext4_mkdir -> 
    ext4_init_new_dir -> 
         ext4_init_dot_dotdot 

構想

根據 ext4 的程式碼, dot dot 的實作是建立新的 directory 的時候,
同時建立兩個 dentry 分別 link 到 新建立的 inode 跟 parent inode,
然後再新增回 dentry.

換句話說,是新增兩個 dentry 分別處理 . 跟 ..

需要解決的部分

  1. 拿到 parent inode 跟 parent dir name (已解決)
  2. 新增兩個 dentry (. 跟 ..),分節紀錄 inode 跟 parent inode.
  3. 新增到目錄 (directory) 的 dentry 中