• 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。

  • 相关阅读:
    [POI2013]BAJ-ytecomputer [动态规划]
    【2019.10.15】网课 Za
    【初赛】
    [NOI2014]魔法森林[最短路 spfa]
    【洛谷2019金秋营模拟赛1】
    【luogu1315】 观光公交[贪心]
    【luogu4450】收集邮票 [期望dp]
    [HAOI2012]高速公路 [线段树 期望]
    ALGO-185 Trash Removal
    精度计算——减法
  • 原文地址:https://www.cnblogs.com/elnino/p/4383658.html
Copyright © 2020-2023  润新知