bio

struct bio_vec

bio_vec表示一段连续的内存数据,最大为一个page
一般情况下,bio_vec与page一一对应. 所有bio_vec就组成 了一个bio携带的所有数据

struct bio_vec {
        struct page     *bv_page;/*数据所属的page */
        unsigned int    bv_len;/*数据大小 */
        unsigned int    bv_offset;/*数据在page内的偏移 */
};

 

generic_make_request()

generic_make_request函数可能会有递归调用自己的情况,当递归调用自身时,if(current->bio_list)条件成立,将bio添加到current->blo_list,然后递归调用直接返回,返回后bio_list_on_stack[0]里就有了一个bio,递归调用calltrace举例如下(dm:device mapper):

复制代码
stacktrace for mediaserver-774:
[ffffffc0106f48b8] generic_make_request+0x0/0x2b4
[ffffffc010acc3d8] __split_and_process_non_flush+0x170/0x1f0
[ffffffc010acb354] __split_and_process_bio+0x14c/0x32c
[ffffffc010acb0b8] dm_process_bio+0x104/0x254
[ffffffc010acad44] dm_make_request+0x44/0x104
[ffffffc0106f49c8] generic_make_request+0x110/0x2b4
[ffffffc0106f5220] submit_bio+0x84/0x25c
[ffffffc0105a55ec] ext4_submit_bio_read+0x38/0x240
[ffffffc0105a54e8] ext4_mpage_readpages+0x98c/0xa58
[ffffffc0105838c8] ext4_readpages+0x3c/0x48
[ffffffc01040abb8] page_cache_sync_readahead+0x90/0x148
[ffffffc0105a54e8] ext4_mpage_readpages+0x98c/0xa58
[ffffffc0103fd424] generic_file_buffered_read+0xf0/0xce8
复制代码

 

posted @   aspirs  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示