- 副本OSD收到主OSD的写请求时,也是按照消息处理的流程从队列里取出来进行处理,先写PGLog,然后注册两个回调函数,然后进行写journal和写本地缓存的操作,在处理完成后发送响应给主OSD(op_modify_commit和op_modify_applied),具体流程参考上一篇文章;
- 主OSD收到副本OSD的响应后,从in_progress_ops中找到op,op里就有注册的回调函数,判断flag如果是CEPH_OSD_FLG_ONDISK,则从waiting_for_commit中删除,否则从waiting_for_applied中删除;然后根据waiting_for_commit/waiting_for_applied是否为空,来调用对应的回调函数,在完成的情况下发送消息给客户端;
对于0.80.10版本,没有MSG_OSD_REPOP,只有MSG_OSD_SUBOP