__submit_bio
时间: 2024-02-28 22:51:30 浏览: 29
__submit_bio函数是Linux内核中的一个函数,用于提交一个块I/O请求。它的作用是将一个bio结构体添加到当前进程的bio_list中,并通过调用request_queue的make_request_fn函数来处理这个请求[^2]。
下面是__submit_bio函数的大致逻辑[^2]:
1. 检查bio是否合法。
2. 如果当前进程的bio_list存在,将bio添加到bio_list中并返回。
3. 初始化一个新的bio_list,并将其赋值给当前进程的bio_list。
4. 从bio中获取要使用的bdev设备的request_queue。
5. 调用request_queue的make_request_fn函数来处理这个请求。
6. 将bio从当前进程的bio_list中弹出。
7. 检查bio是否为空,如果是,则清空当前进程的bio_list;如果不是,则继续循环执行以上步骤。
请注意,__submit_bio函数的具体实现可能会因为不同的内核版本而有所不同,上述逻辑仅供参考。
相关问题
linux下用户通过write()函数向硬盘中写入数据,内核执行的时候流程上会调用__submit_bio()函数吗
不会。`write()`函数向硬盘中写入数据时,内核会调用`file_operations`结构体中的`write()`函数,该函数会调用`vfs_write()`函数,`vfs_write()`函数会调用`generic_write_checks()`函数进行一些权限和空间检查,然后调用`__generic_file_write_iter()`函数将数据写入文件页缓存中。当文件页缓存被填满后,内核会触发写入磁盘的操作,这个过程是异步的,因此内核会将数据提交给块设备层,并在需要时调用`__submit_bio()`函数将数据传递给块设备驱动程序。`__submit_bio()`函数主要是将数据打包成一个`bio`结构体,并将其传递给块设备驱动程序的`submit_bio()`函数。因此,`__submit_bio()`函数不会在用户通过`write()`函数向硬盘中写入数据时直接被调用。
linux中submit_bio和ll_rw_block是什么关系
submit_bio和ll_rw_block都是用于向块设备提交I/O请求的函数,在Linux内核中它们的关系是submit_bio函数是对ll_rw_block函数的封装。submit_bio函数将I/O请求封装成bio结构体,然后将bio提交给块设备驱动程序处理,而ll_rw_block函数则是块设备驱动程序对bio请求进行实际处理的函数。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)