文档章节

cephfs kernel client针对dentry的操作

linuxhunter
 linuxhunter
发布于 2016/08/12 14:30
字数 316
阅读 173
收藏 0

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的引用计数值

© 著作权归作者所有

linuxhunter
粉丝 72
博文 144
码字总数 93264
作品 0
沈阳
高级程序员
私信 提问
cephfs linux kernel client针对superblock操作流程的分析

init_caches() 初始化如下几个cache: cephinodecachep cephcapcachep cephcapflush_cachep cephdentrycachep cephfilecachep cephfs cache ceph_mount() |解析mount options |创建fs client......

linuxhunter
2016/08/10
238
0
cephfs kernel client针对dir的inode操作

cephfs kernel client针对dir的inode操作 const struct inodeoperations cephdir_iops = { .lookup = ceph_lookup, .permission = ceph_permission, .getattr = ceph_getattr, .setattr = ce......

linuxhunter
2016/08/12
435
0
cephfs linux kernel client针对export的操作

const struct exportoperations cephexport_ops = { .encodefh = cephencode_fh, .fhtodentry = cephfhto_dentry, .fhtoparent = cephfhto_parent, .getparent = cephget_parent, .getname =......

linuxhunter
2016/08/16
125
0
ceph的数据存储之路(11)----- cephfs 文件系统

cephfs 文件系统 cephfs 文件系统的使用: 1.首先你要搭建一个ceph集群。如何搭建ceph集群在前面已经介绍过了。如果要使用cephfs文件系统,则必须要有管理文件元数据的mds节点。 2.在集群上创...

一只小江
2016/07/04
9.2K
4
cephfs kernel client针对inode的相关操作

针对文件的inode的操作体现在数据结构struct inode_operations中,具体内容如下: const struct inodeoperations cephfile_iops = { .permission = ceph_permission, .setattr = ceph_setatt......

linuxhunter
2016/08/12
244
0

没有更多内容

加载失败,请刷新页面

加载更多

关于java中变量的重名问题

在java语言中,变量的命名有很多规则和规范,但是有的地方可以使用相同的变量名,有的地方却不能使用,这是为什么呢? 下面是个人的一点见解,是从作用域和内存来分析的,目的是为了方便理解...

INEVITABLE
13分钟前
4
0
MySQL的COUNT语句,竟然都能被面试官虐的这么惨?

数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查。 在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,...

程序员修BUG
15分钟前
3
0
PHP+Mysql统计文件下载次数实例

PHP+Mysql统计文件下载次数实例,实现的原理也很简单,是通过前台点击链接download.php传参id,来更新点击次数。 获取文件列表: <?php require 'conn.php'; $query = mysql_query("S...

ymkjs1990
16分钟前
3
0
一、环境变量及Jshell

一、环境变量: 作用: 可执行文件所在位置的链接。CLI输入命令时,通过环境变量指引找到命令所在位置 windows的环境变量名不区分大小写,Linux区分 Windows下的用户变量即只有当前用户生效 ...

清自以敬
17分钟前
3
0
微软改名部又出手:Office 365正在悄悄更名为Microsoft 365

然而让人疑惑的是Microsoft 365 是微软面向企业提供的服务,这项服务附带操作系统以及办公软件的订阅授权。 现在把面向家庭消费者的办公软件也换成Microsoft 365 是什么操作?没人知道因为微...

linuxCool
17分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部