RecoveryQueue分析

RecoveryQueue包含三个集合:file_recover_queue(保存待进行recover操作的CInode集合)、file_recover_queue_front(保存优先待进行recover操作的CInode集合)、file_recovering(保存正在进行recover操作的CInode集合)。一个Filter类,该类用于执行实际的recover操作。

 

RecoveryQueue::prioritize()

|__待进行recover的CInode已经在file_recovering集合内

     |__直接返回

|__待进行recover的CInode已经在file_recover_queue集合内

     |__将CInode插入到file_recover_queue_front集合

 

RecoveryQueue::enqueue()

|__将待进行recover的CInode插入到file_recover_queue集合

 

RecoveryQueue::advance()

|__检查file_recovering集合的大小是否小雨mds_max_file_recover

     |__从file_recover_queue_front集合获取待recover的CInode

     |__RecoveryQueue::_start()

     |__从file_recover_queue集合获取待recover的CInode

     |__RecoveryQueue::_start()

 

RecoveryQueue::_start()

|__从CInode上获取projected inode信息

|__将CInode插入到file_recovering集合

|__创建C_MDC_Recover类对象,该类对象在finish()函数中执行RecoveryQueue::_recovered()回调函数

|__Filter::probe()                                   调用Filter的probe()函数执行实际的Recovery操作且执行完成后调用C_MDC_Recover::finish()函数

 

RecoveryQueue::_recovered()

|__将恢复完的CInode从file_recovering集合中删除

|__CInode::state_clear(STATE_RECOVERING)

|__RecoveryQueue::advance()                    找到下一个待执行recovery的CInode

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值