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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析