Linux文件系统
文章平均质量分 82
橙色逆流
这个作者很懒,什么都没留下…
展开
-
Linux虚拟文件系统--文件路径名的解析(1)--整体过程
文件路径名的解析是VFS中最基本也是最频繁用到的一个部分,它的代码实现还是十分繁杂的,主要是因为除了普通文件名的解析,内核还要考虑各种可能出现的情况,如一个目录下挂载了多个文件系统,路径中的符号链接等等……后面我会分几次将整个过程进行一个尽量仔细的分析,其中所涉及到的各种数据结构在ULK等相关内核书籍上都有比较详细的介绍,就不列出来了 文件路径名的解析路口函数为path_looku原创 2012-11-20 20:56:39 · 6235 阅读 · 2 评论 -
Linux虚拟文件系统--文件路径名的解析(3)--普通文件名
对于一个文件路径的分量,如果其不为'.'和'..'则属于普通文件名,普通文件名的解析由do_lookup()函数来处理static int do_lookup(struct nameidata *nd, struct qstr *name, struct path *path){ struct vfsmount *mnt = nd->path.mnt; struct原创 2012-11-21 15:34:40 · 5864 阅读 · 1 评论 -
Linux虚拟文件系统--文件路径名的解析(4)--符号链接
符号链接也是一种文件,只不过其内容是另一个文件的路径名。对于符号链接的处理,要注意避免死循环的产生,如一个符号链接指向其本身。符号链接可能包含了符号链接,因此内核采用递归的方式来处理这个问题,为了避免符号链接的死循环而导致无穷递归,内核采用link_count和total_link_count来跟踪符号链接的处理,其中前者表示连续的符号链接数,后者表示总共的符号链接数,两者都不能超过各自的限制,否原创 2012-11-21 21:14:56 · 5139 阅读 · 1 评论 -
Linux虚拟文件系统--open()
open()系统调用用来打开一个文件,本文就VFS层,对open系统调用的过程进行一个简单的分析。 SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode){ long ret; if (force_o_largefile()) flags |= O_LARGEFILE;原创 2012-11-22 19:37:32 · 6042 阅读 · 1 评论 -
Linux虚拟文件系统--文件路径名的解析(2)--回退父目录
上文介绍了解析文件路径名的一个通体的过程,这里再把其中的一些细节拿出来进行分析。首先对于文件名的特点,可以分为三类:普通文件名,'.'和'..',对于'.'的处理很简单,因为它表示当前目录,因此直接通过continue进入下一轮查找即可,对于'..',也就是退回到父目录,本身也不是一件难事,但是这里要考虑到几个特殊情况,先看看内核处理'..'的方法:static __always_inline原创 2012-11-21 11:13:22 · 5274 阅读 · 1 评论