首页 > 系统服务 > 详细

linux源代码阅读笔记 find_entry分析

时间:2015-04-01 14:49:44      阅读:358      评论:0      收藏:0      [点我收藏+]
78 static struct buffer_head * find_entry(struct m_inode * dir,
 79         const char * name, int namelen, struct dir_entry ** res_dir)

 find_entry是linux文件系统中一个较为费解的函数。下面我们来分析一番。

它的第一个参数是 m_inode型,它指示了函数操作的所在根目录的inode节点。即相对路径的起始节点。

name自然是想要查找的目录路径,namelen是该目录名的长度。

res_dir是以指针的形式返回想要查找的目录项。

而函数返回值是包含该目录项的block所对应的buffer_head。

为什么会有两个返回值呢。我们知道,ext2文件系统下,目录是以文件形式存在的,inode是目录的索引。

而inode指向的block中存储的是该目录下包含的文件和子目录的信息。它以如下的结构体存在。

140 struct dir_entry {
141         unsigned short inode;
142         char name[NAME_LEN];
143 }; 

 name数组存储了文件名,inode存储了inode号。这样目录文件实际上也是一个文件,只不过该文件的内容是一个个

dir_entry结构体,因此,它也与普通文件一样,可能占有一个block,也可能占有多个block。

find_entry函数的功能就是找到存储了name参数对应文件的dir_entry所在的block,并且以buffer_head的形式返回,同时

以指针的形式返回该文件对应的dir_entry。

 

linux源代码阅读笔记 find_entry分析

原文:http://www.cnblogs.com/elnino/p/4383658.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!