linux内核奇遇记之md源代码解读之四
linux内核奇遇记之md源代码解读之四转载请注明出处:http://blog.csdn.net/liumangxiong
运行阵列意味着阵列经历从无到有,建立了作为一个raid应有的属性(如同步重建),并为随后的读写做好的铺垫。那么运行阵列的时候到底做了哪些事情,让原来的磁盘像变形金刚一样组成一个新的巨无霸。现在就来看阵列运行处理流程:
5165行,加载bitmap,同样留到bitmap章节再详解。5171行,唤醒阵列主线程。5172行,唤醒阵列同步线程。5174行,设置虚拟gendisk磁盘大小。5175行,运行磁盘,让磁盘为系统可见。5176行,设置md改变标志。5177行,上报磁盘信息到udev。do_md_run完成,RUN_ARRAY命令也就执行完成了。小结一下,do_md_run函数的作用就是向上虚拟一个块设备,向下包装磁盘,建立读写请求的通道,将对md设备的请求能够转发到磁盘上去。下一小节就介绍raidd5阵列的运行。转载请注明出处:http://blog.csdn.net/liumangxiong5158 static int do_md_run(struct mddev *mddev)5159 {5160 int err;5161 5162 err = md_run(mddev);5163 if (err)5164 goto out;5165 err = bitmap_load(mddev);5166 if (err) {5167 bitmap_destroy(mddev);5168 goto out;5169 }5170 5171 md_wakeup_thread(mddev->thread);5172 md_wakeup_thread(mddev->sync_thread); /* possibly kick off a reshape */5173 5174 set_capacity(mddev->gendisk, mddev->array_sectors);5175 revalidate_disk(mddev->gendisk);5176 mddev->changed = 1;5177 kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE);5178 out:5179 return err;5180 }