web上点定位灯之后,硬盘信息消失问题分析
更新时间: 2026/05/28
在Gitcode上查看源码

问题背景

  • 单板类型:NA;
  • 软件版本:openUBMC 25.03;
  • 涉及功能:硬盘信息;
  • 触发条件:不判断硬盘类型,统一都在设置成功后刷新资源树上的信息。
  • 业务表现:预期点灯不影响硬盘信息;实际点硬盘定位灯后,原本已经获取到的硬盘信息丢失。

问题复现步骤

在web页面上点硬盘定位灯后,原本已经获取到的硬盘信息丢失,具体情况分两种:

  1. NVME盘:点灯前信息正常,点灯后信息消失,刷新页面信息恢复
    • 点灯前:
    • 点灯后:
  2. SATA盘:点灯前信息正常,点灯后信息消失,刷新页面和关闭点灯都不会恢复
    • 点灯前:
    • 点灯后:

关键日志信息

查看app.log日志,确认报错如下:

定位过程

  1. 根据日志打印发现直通盘也执行了“刷新资源树上的信息”的操作。

  2. 跟踪代码发现此处未加直通盘的判断

    lua
    -- 设置成功后刷新资源树上的信息
    ret = pcall(sml.get_pd_info, {Priority = 'High'}, driveRefControllerId, drive.device_id)
    if ok then
        drive.on_pd_update:emit(ret)
    end

问题原因

直通盘点灯之后不应该刷新硬盘信息。

解决方案

在代码中添加判断"if drive.RefControllerId ~= common_def.INVALID_U8",直通盘点灯之后不刷新硬盘信息。

lua
if drive.RefControllerId ~= common_def.INVALID_U8 then
    -- 设置成功后刷新资源树上的信息
    ok, ret = pcall(sml.get_pd_info, {Priority = 'High'}, drive.RefControllerId, drive.device_id)
    if ok then
        drive.on_pd_update:emit(ret)
    end
end