摘要:
本想就此结束Raid1的专题博客,但是觉得Raid1中自己构建的一套barrier机制的设计非常巧妙,值得单独拿出来分析。它保证了同步流程和正常读写流程的并发性,也为设备冻结/解冻(freeze/unfreeze)机制提供了保障。 Barrier的意思就是,在某个请求设置上barrier之后,... 阅读全文
摘要:
Raid1的源码的读、写、同步,在本系列博客中都已经分析完成。除了barrier机制要专门拿出来分析(下一篇会写)以外,有一些问题值得思考和注意,分析如下。1、freeze_array是如何做的? 通过barrier挡住上层用户io请求,并且nr_waiting++计数。nr_pending表示... 阅读全文
摘要:
同步的大流程是先读,后写。所以是分两个阶段,sync_request完成第一个阶段,sync_request_write完成第二个阶段。第一个阶段由MD发起(md_do_sync),第二个阶段由守护进程发起。 如果是用户发起的同步请求。该请求下发到raid1层,首先进入同步读函数sync_re... 阅读全文