Linux Block模块之IO合并代码解析( 四 )

2.4 前/后向合并在结构体 struct request 中有两个成员分别是 struct bio *biostruct bio *biotail  , 成员 bio 表示还没有完成传输的第一个bio , 成员 biotail 指向最后一个需要处理的bio 。在结构体 struct bio 中有一个成员 struct bio *bi_next  , 该成员指向下一个需要处理的bio , 多个需要连续处理的bio通过该成员链接 。
前向合并指的是将bio合并到req的前边 , 故基本逻辑为:
/* 将bio插入到req前边 */bio->bi_next = req->bio;req->bio = bio;后向合并指的是将bio合并到req的后边 , 故基本逻辑为:
/* 将bio插入到req尾部 */req->biotail->bi_next = bio;req->biotail = bio;【Linux Block模块之IO合并代码解析】

经验总结扩展阅读