bio sector的计算与块设备lba

70 篇文章 11 订阅 ¥9.90 ¥99.00
本文探讨了在构造NVMe命令时如何使用request的__sector和__data_len来设置LBA和长度。在blk_mq_make_request函数(通常由submit_bio调用)中,新bio可能与现有request合并,通过bio_attempt_back_merge或bio_attempt_front_merge调整request参数。在发送NVMe命令前,需对request中的bio链表进行DMA映射。对于bio的bi_sector值来源,可以参考相关块设备异步读取流程的讨论。
摘要由CSDN通过智能技术生成

在构造nvme cmd命令的时候,使用了request的参数__sector,__data_len来设置nvme命令的lba,len值。

 request的参数__sector,__data_len是怎么得到的呢?

在造请求的函数(blk_mq_make_request,通常由submit_bio调用)中,如果新bio能合并到当前线程plug中的request或者能合并到设备请求队列中的request(一个request是多个bio的集合,把多个磁盘地址连续的bio合并成一个request),则会根据是前项合并还是后项合并重新调整request的__sector与__data_len;如果不能合并,则申请新的request,用bio初始化他:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值