You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SLES15 SP3(内核5.3.18-59.16)下驱动编译make_request_fn报错求助

故障原因及解决方案

故障原因

你编译的驱动使用了Linux内核已弃用的make_request_fn块设备IO钩子接口,SLES15 SP3的5.3.18内核虽然主版本号为5.3,但SUSE已经回移了高版本内核的块层重构代码,移除了make_request_fn类型定义及struct request_queue结构体中的对应成员,因此触发编译报错。

修复方案

方案一(推荐)

联系驱动的官方提供方,索要适配SLES15 SP3内核版本的驱动安装包,直接安装即可,无需手动修改代码。

方案二(手动修改代码适配)

按以下步骤修改对应源码文件:

  1. 修改KernelTracer.h
    找到第87行代码:
make_request_fn* original_make_request_fn;

替换为:

blk_qc_t (*original_submit_bio)(struct bio *bio);
  1. 修改KernelTracer.c
  • 找到make_request_hook函数定义,将函数签名修改为适配submit_bio的格式,原逻辑中调用原有接口的行device_info->original_make_request_fn(q, bio);替换为return device_info->original_submit_bio(bio);
  • 将所有代码中访问bd->bd_disk->queue->make_request_fn的位置,全部替换为bd->bd_disk->queue->submit_bio,涉及的代码行包括:第764、768、776、779、784、810行
  • 将所有代码中引用original_make_request_fn成员变量的位置,全部替换为original_submit_bio

修改完成后重新执行编译命令即可。

内容的提问来源于stack exchange,提问作者JoeyM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:18:01