这些文章已经写了好几年了,可能已经过时了。在MSN space和QQzone几经辗转之后,我想也许这些技术文章还是放在搞技术的博客中更能帮助人。于是做了一个艰难的决定,把这些文章一篇篇搬过来!绝对是原创的。
raid5d是RAID-5的守护线程,我们知道make_request将数据做了初步处理以后就结束了,那么这个stripe_head的后续处理权就都交到了raid5d的手里。
我们可以去看raid5d的代码,也就是raid5d函数。一但raid5d被唤醒,他所做的就是执行raid5d函数,这个函数所做的事情很简单,那就是 将handle_list里的stripe_head一个个拿出来处理,如果handle_list里的stripe_head都处理完了,那就再看看 delay_list里有没有满足条件可以处理的,也就是被延迟写的stripe_head是否能被处理,可以处理的话就放到handle_list中, 一个个让raid5d去处理。