web上点定位灯之后,硬盘信息消失问题分析
更新时间: 2026/05/28
在Gitcode上查看源码问题背景
- 单板类型:NA;
- 软件版本:openUBMC 25.03;
- 涉及功能:硬盘信息;
- 触发条件:不判断硬盘类型,统一都在设置成功后刷新资源树上的信息。
- 业务表现:预期点灯不影响硬盘信息;实际点硬盘定位灯后,原本已经获取到的硬盘信息丢失。
问题复现步骤
在web页面上点硬盘定位灯后,原本已经获取到的硬盘信息丢失,具体情况分两种:
- NVME盘:点灯前信息正常,点灯后信息消失,刷新页面信息恢复
- 点灯前:
- 点灯后:
- SATA盘:点灯前信息正常,点灯后信息消失,刷新页面和关闭点灯都不会恢复
- 点灯前:
- 点灯后:
关键日志信息
查看app.log日志,确认报错如下:
定位过程
根据日志打印发现直通盘也执行了“刷新资源树上的信息”的操作。
跟踪代码发现此处未加直通盘的判断
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