MDCache中对dentry link的理解

原创
2016/08/09 17:42
阅读数 526

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。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部