block layer阅读记录(一)
block layer阅读记录(一)
block layer应该细分为两层 bio layer和request layer
block layer之上
访问块设备主要是通过/dev,这里存在两层映射
- S_IFBLK 到 kernel
- i_bdev 到 struct block_device
block layer属于IO stack中的一层,它的上层是 page cache,用与缓存读、buffer write相关的inode
bio layer
struct gendisk上面链接的是kernel中块设备,也同时链接的下层
bio request的简单处理
bio layer最核心的数据结构就是bio,这也是为什么叫bio layer。一个bio对象,代表一个读写命令,包含着target device,address,size这些关键信息
流程:
generic_make_request() or submit_bio() -> make_request_fn() 产生request -> blk_queue_make_request() 向request layer传递