4
A
回答
1
如果你有struct path
(或可以構建一個),看看怎麼智代做到這一點: http://lxr.linux.no/linux+v2.6.37/security/tomoyo/realpath.c#L86
1
看看dentry_path()
。它將填充一個緩衝區,直到達到根的路徑。要繼續過去,您需要遍歷文件的f_vfsmount
和它的mnt_parent
s,直到您到達文件系統的真實根目錄。
1
是的,只有一個dentry就足夠了,通過dentry-> parent返回。 當你遇到一個掛載點時要小心,對於linux支持「一個dentry掛載多個設備」......好吧,它很容易編碼,只需切換到vfsmnt-> mnt_parent。
順便說一句:我經常困惑,爲什麼linux建立一個字段「mnt_parent」而不是「mnt_child」的掛載點鏈接列表,當我寫這個答案時,我似乎猜測出了一些東西。
相關問題
- 1. 如何從inode/pathname找到一個dentry?
- 2. Linux Kernel Threads
- 3. need_resched infos(linux kernel 2.6.30)
- 4. 調試linux kernel panic
- 5. Linux Kernel pre-silicon bringup
- 6. QEMU和eth0上的Linux vanilla kernel
- 7. Linux內核 - 刷新VFS Dentry緩存
- 8. 如何從給定的inode獲取路徑名或dentry或struct文件?
- 9. clock_getres和kernel 2.6
- 10. linux-kernel如何讀取proc/pid文件?
- 11. 如何在Linux Kernel 2.6.31.5中執行「kill_proc()」
- 12. Linux Kernel 3.0+中的調度機制
- 13. linux tmpfs中如何生成inode數字?
- 14. 什麼是Linux中的匿名inode?
- 15. Linux Kernel有沒有第一次發生?
- 16. 在LINUX KERNEL中換出特定頁面
- 17. Linux Kernel Boot參數在哪裏解析
- 18. linux-kernel中進程的當前目錄
- 19. linux kernel dumpstack中「.clone」是什麼意思?
- 20. 如何在workqueue(linux,kernel)中使用copy_to_user?
- 21. 推薦用於Linux C&Kernel開發的Linux IDE
- 22. 文件查找和dentry緩存
- 23. 「Linux Kernel API」,「System Calls」,「System Interfaces」和「GNU C Library」有什麼區別?
- 24. Inode數量正在變化
- 25. 目錄Inode vs普通文件Inode
- 26. Android文件系統和inode
- 27. 一把umbraco節點和inode
- 28. 刪除文件和Inode
- 29. C程序:通過inode編號獲取inode標頭字段和信息
- 30. android內核錯誤:'struct dentry'沒有名爲'd_alias'的成員
你可以反覆提升'd_parent'並跟蹤'd_name'嗎? – chrisaycock 2011-01-07 05:46:08
是的,這是可能的,我已經這麼做了...... *但是*如果給定的dentry是一個已安裝的文件系統(來自USB,NFS或其他任何東西),則d_parent將停止,直到該文件系統的根目錄爲止......假設/ dev/sda1安裝在/ tmp/a/b/c/d/e /(* root的/ dev/sda1 *),最高的d_parent值將會*在*「e」目錄之後 – 2011-01-07 05:48:05
@Billy您是否希望爲不同的解決方案? – chrisaycock 2011-01-07 05:50:10