简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
linux内核奇遇记之md源代码解读之二转载请注明出处:http://blog.csdn.net/liumangxiong在编译完成linux内核源代码的时候,drivers/md目录下会生成多个ko文件,那么这些内核模块哪一个先加载,哪一个后加载的呢?例如md-mod.ko, raid5.ko, raid10.ko,这些模块是一起加载的呢,还是有先后顺序呢?如果熟悉linux内核编程的话
linux内核奇遇记之md源代码解读之十二raid读写转载请注明出处:http://blog.csdn.net/liumangxiong我们都知道,对一个linux块设备来说,都有一个对应的请求队列。注册在这个请求队列上的请求就是该块设备的请求入口。对于raid来说,分配struct mddev时就已经设置好了,在函数md_alloc中有这样的代码:4846 blk_que
linux内核函数之 blk_plug
这个星期偷着点闲看下flashcache,所谓知其然知其所以然,本着程序员追根抛底的职业素养,看看flashcache究竟是何等的三头六臂。一、flashcache是什么flashcache是一个linux内核模块,主要目的是用SSD加速块设备,相当于用SSD盘作为块设备的缓存。二、flashcache在内核的哪一层位于内核的dm层(device mapper),在块设备之上,在V
linux内核奇遇记之md源代码解读之一转载请注明出处:http://blog.csdn.net/liumangxiong最近花了一段时间认真地学习了一下md代码,并且在原代码的基础上开发了一系列的新功能,这些新功能让md更完善、更适合于企业大容量存储,通过增加阵列缓存和bitmap优化大大提升了存储速度,提高了数据的可靠性,在任何掉电的情况下保证数据一致性,超级块异常情况下完全不影响
linux内核奇遇记之md源代码解读之十四raid5非条块内读如果是非条块内读,那么就至少涉及到两个条块的读,这就需要分别从这两个条块内读出数据,然后再凑成整个结果返回给上层。接下来我们将看到如何将一个完整的bio读请求拆分成多个子请求下发到磁盘,从磁盘返回之后再重新组合成请求结果返回给上层的。4097logical_sector = bi->bi_sector & ~((sec
linux内核奇遇记之md源代码解读之十三raid5重试读转载请注明出处:http://blog.csdn.net/liumangxiong上节我们讲到条块内读失败,在回调函数raid5_align_endio中将请求加入阵列重试链表,在唤醒raid5d线程之后,raid5d线程将该请求调用retry_aligned_read函数进行重试读:4539static intre
这一小节介绍一下flashcache读写入口和读写的基础实现。首先,不管是模块还是程序,必须先找到入口,用户态代码会经常去先看main函数,内核看module_init,同样看IO流时候也要找到入口。flashcache作为一个dm_target,入口就是struct target_type 的map函数,对应的是flashcache_map函数:1581/*1582 * Decid
linux内核奇遇记之md源代码解读之九阵列raid5同步函数sync_request转载请注明出处:http://blog.csdn.net/liumangxiong我们再来回顾一下整个场景:1)在运行阵列的时候调用md_wakeup_thread唤醒主线程2)主线程调用md_check_recovery检查同步3)md_check_recovery函数中检查需要同步调用