博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
inode的若干锚
阅读量:6037 次
发布时间:2019-06-20

本文共 1066 字,大约阅读时间需要 3 分钟。


/** *  __insert_inode_hash - hash an inode *  @inode: unhashed inode *  @hashval: unsigned long value used to locate this object in the *      inode_hashtable. * *  Add an inode to the inode hash for this superblock. */ void __insert_inode_hash(struct inode *inode, unsigned long hashval) {     struct hlist_head *b = inode_hashtable + hash(inode->i_sb, hashval);     spin_lock(&inode_hash_lock);     spin_lock(&inode->i_lock);     hlist_add_head(&inode->i_hash, b);     spin_unlock(&inode->i_lock);     spin_unlock(&inode_hash_lock); } EXPORT_SYMBOL(__insert_inode_hash);

inode_hashtable就是hash table的表头,通过拉链法来解决冲突。

其中b就是计算出的拉链表,通过hlist_add_head将inode->i_hash作为锚点,添加到拉链表的头部。

关于inode_hashtable,参见一文。

The dentry cache, described above, provides a fast way

of mapping directory entries to inodes.

代表着目录分量,即一个完整的路径被""分开的各个部分,并且将其指向到具体的inode上。

因此,dentry存在的意义在于,可以通过路径名快速地找到它所对应的inode

所有文件中的数据,说白了,就是该文件映射的内存页面,都是存在的inode->i_mapping->page_tree中,这些页面是在mmap系统调用时和具体的文件系统中的节点建立起了映射关系,在page fault时从具体的文件系统的节点中读取出内容来初始化的。

转载于:https://www.cnblogs.com/long123king/p/4088825.html

你可能感兴趣的文章
Vue 2.0 构建单页应用最佳实战
查看>>
JTalk Online:面试官教你快速成为 leader 最欣赏的技术人
查看>>
Java并发编程笔记之FutureTask源码分析
查看>>
使用LeanCloud快速开发一款小程序
查看>>
MMA冠军Rory MacDonald:比特币现金(BCH)是真正的比特币
查看>>
适配器模式
查看>>
[译] 在 Laravel 应用程序之间共享数据库
查看>>
Koa:核心探秘与入坑指北
查看>>
还在用JSON? Google Protocol Buffers 更快更小 (实践篇)
查看>>
探索 vue-spa 全家桶项目,解析配置,目录结构,路由以及状态管理的实现,附源码
查看>>
OpenStack安装(一) KeyStone模块
查看>>
Java锁之ReentrantReadWriteLock
查看>>
这是一个起点,没有终点 . . .
查看>>
更优雅的使用 Parcel 进行前端项目的打包
查看>>
坑系列 --- 重构过程中的过度设计
查看>>
iOS控件 UICollectionView
查看>>
黑狐”木马分析报告
查看>>
非对称加密和数字证书
查看>>
XXL-RPC v1.2.2,分布式服务框架
查看>>
学习java很难吗?
查看>>