linux源代码阅读笔记 find_entry分析

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。

 

转载于:https://www.cnblogs.com/elnino/p/4383658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值