# 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 中