- 论坛徽章:
- 0
|
关于bio_vec的几点疑问, 望解惑, Thanks
struct bio_vec {
struct page *bv_page;
unsigned int bv_len;
unsigned int bv_offset;
};
1. 一个bio_vec会跨page吗? bv_len<=PAGE_SIZE ?
2. bv_offset跟什么有关系, 一般情况bv_offset=0?
3. bv_len + bv_offset = PAGE_SIZE ?
举一个例子:
如果存储盘的硬件扇区是4KB, 现在要读8KB, Block IO Layer 会产生怎样的bio?
1) 2个同样的bio .bv_len=4KB .bv_offset=0
2) 3个bio bio1 .bv_len=4KB .bv_offset=0 | bio2 bio3 .bv_len=2KB bv_offset=2KB
3) 其他各种组合
哪种? 跟什么有关系
因为像现在的NandFlsh的硬件扇区一般是4KB 像case2)中的bio2 bio3不够一个写Unit,这样的bio底层接口感觉没法处理啊? 还是说VFS和BLOCK IO Layer 能保证不会有这种Bio
|
|