文档章节

MDCache中对dentry unlink的理解

linuxhunter
 linuxhunter
发布于 2016/08/09 17:43
字数 230
阅读 139
收藏 0

MDCache中send_dentry_unlink()函数负责发送dentry unlink到其他MDS进程。发送端首先得到参数dn下的所有replica_map,若参数中straydn不为空则得到straydn下所有的replica_map。之后遍历得到的replica_map数组,创建MDentryUnlink类消息,若straydn不为空则调用replicate_stray()函数将straydn信息写入到MDentryUnlink类消息中的straybl字段中。最好将MDentryUnlink类消息发送到目的MDS进程。

MDCache中的handle_dentry_unlink()函数负责处理MDentryUnlink类消息。若类消息中的straybl不为空则调用add_replica_stray()函数得到straydn。之后得到类消息中对应的CDir及其对应的CDentry类对象以及CDentry::linkage类对象。若CDentry::linkage是primary link则调用dn->dir->unlink_inode()函数来unlink primary link,若CDentry::linkage不是primary link则调用dn->dir->unlink_inode()函数来unlink remote link。对于straydn不为空则调用trim_dentry()函数来清理straydn。

© 著作权归作者所有

linuxhunter
粉丝 72
博文 144
码字总数 93264
作品 0
沈阳
高级程序员
私信 提问
EMetaBlob类分析

EMetaBlob用于记录CDir和CDentry的Log EMetaBlob类说明: class EMetaBlob: public LogEvent { }; EMetaBlob类的方法: EMetaBlob::adddircontext(dir, mode) 将dir及其父目录添加到EMetaBl......

linuxhunter
2016/07/20
228
0
MDCache中对Cache Expire的理解

MDCache中handlecacheexpire()函数处理MCacheExpire类消息。发送MCacheExpire类消息的MDS进程已经出现了若干个inode、dir以及dentry在cache中超时的情况,因此发送MCacheExpire类消息的MDS进...

linuxhunter
2016/08/09
78
0
MDCache中对dentry link的理解

MDCache中senddentrylink()函数负责发送dentry link到其他MDS进程。发送端遍历replicamap数组,得到CDentry对应的CDentry::linkaget类对象,之后创建MDentryLink类消息,若CDentry::linkaget...

linuxhunter
2016/08/09
180
0
StrayManager类分析

StrayManager类说明: class StrayManager { elist<CDentry*> delayed_eval_stray; list<QueuedStray> readyforpurge; MDSRank *mds; uint64t opsin_flight; uint64t filespurging; uint64t ......

linuxhunter
2016/07/22
230
0
针对MDS中MDCache中对discover的理解

discover发送端通过调用senddiscover()函数来创建MDiscover类消息,之后将该类消息发送给目的MDS进程。discover可以寻找base inode、Dir、Dentry以及Dentry::linkage对应的Inode。 discover...

linuxhunter
2016/08/09
110
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
42
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部