博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cephfs kernel client针对dentry的操作
阅读量:6873 次
发布时间:2019-06-26

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

hot3.png

cephfs kernel client针对dentry的操作

const struct dentry_operations ceph_dentry_ops = {

        .d_revalidate = ceph_d_revalidate,

        .d_release = ceph_d_release,

        .d_prune = ceph_d_prune,

};

 

ceph_d_revalidate(struct dentry *dentry, unsigned int flags)    用于检查cache中的dentry是否有效

|__调用dget_parent()函数得到dentry对应的parent dentry

|__调用d_inode()函数得到parent dentry对应的struct inode数据

|__调用dentry_lease_is_valid()函数检查dentry lease是否有效

|__若无效

    |__得到操作码op=CEPH_MDS_OP_LOOKUPSNAP或者CEPH_MDS_OP_LOOKUP

    |__调用ceph_mdsc_create_request()函数创建mds请求

    |__调用ceph_mdsc_do_request()函数将请求同步发送给mds进程

    |__调用ceph_dentry_lru_touch()函数将dentry添加到lru中

 

ceph_d_release(struct dentry *dentry)        释放dentry时被调用

|__调用ceph_dentry()函数得到struct ceph_dentry_info数据结构

|__调用ceph_dentry_lru_del()函数将dentry从lru中删除

|__设置dentry->d_fsdata=NULL

|__调用ceph_put_mds_session()函数释放lease session

|__调用kmem_cache_free()函数从cache中释放struct ceph_dentry_info数据结构

 

ceph_d_prune(struct dentry *dentry)        当vfs从cache中删除dentry时调用该函数

|__调用IS_ROOT()函数检查dentry是否包含有效的parent,若dentry是root则直接返回

|__调用d_unhashed()函数检查dentry是否不是hashed,若是则直接返回(未hashed dentry不受影响)

|__调用ceph_dir_clear_complete()函数减少dentry->parent的struct inode中的中的i_release_count的引用计数值

转载于:https://my.oschina.net/linuxhunter/blog/731756

你可能感兴趣的文章
React 中集成 Markdown编辑器
查看>>
Spring Boot 最佳实践(五)Spring Data JPA 操作 MySQL 8
查看>>
由三道题引伸出来的思考
查看>>
React 开发实战(一)- Repeat 组件
查看>>
小程序云开发全套实战教程(最全)
查看>>
单页引用中使用百度地图
查看>>
对 PHP 中依赖注入和控制反转的理解
查看>>
springMVC原理
查看>>
[Python3网络爬虫开发实战] 2-爬虫基础 3-爬虫的基本原理
查看>>
Java IO输入输出及乱码问题
查看>>
Linux服务器配置——简介
查看>>
Java内存区域
查看>>
记录自己用的常见的一些方法
查看>>
请求与响应
查看>>
react项目中使用mocha结合chai断言库进行单元测试
查看>>
css3动画
查看>>
Spring Boot 单元测试二三事
查看>>
电脑中播放的声音怎么在线录制
查看>>
微信小程序开发心得
查看>>
nfs
查看>>