MDCache中对dentry link的理解

本文详细介绍了MDCache中dentry链接机制的工作原理。send_dentry_link()函数用于发送dentry链接信息,它会遍历replica_map数组并创建MDentryLink消息。handle_dentry_link()函数负责处理这些消息,根据消息内容执行primarylink或remotelink操作。

MDCache中send_dentry_link()函数负责发送dentry link到其他MDS进程。发送端遍历replica_map数组,得到CDentry对应的CDentry::linkage_t类对象,之后创建MDentryLink类消息,若CDentry::linkage_t类对象是primary link则调用replicate_inode()函数将primary link信息写入到MDentryLink类消息中,若CDentry::linkage_t类对象不是primary link,则将remote inode number和remote dentry type信息写入到MDentryLink类消息中。最后将MDentryLink类消息发送给目的MDS进程。

MDCache中handle_dentry_link()函数处理MDentryLink类消息。发送MDentryLink类消息的MDS进程通过调用send_dentry_link()函数将dentry link信息以MDentryLink类消息的形式发送给其他MDS进程。接收MDentryLink类消息的MDS进程首先从本地得到消息中dirfrag对应的CDir类对象,之后通过CDir类对象得到其对应的CDentry类对象。若类消息中指定是primary link则调用add_replica_inode()函数完成primary link操作,若类消息中没有指定是primary link则调用dir->link_remote_inode()函数完成remote link。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值