咨询下,sr文件里的PCIeAddrinfo属性在什么情况下会进行持久化设置,持久化设置时失败,导致PcieAddrInfo_NIC_1_010101对象挂掉
问题原因为:
app.log日志中报错,原因是网卡的PCIeDevice未在PCIeAddrinfo列表中匹配到对应的PCIeAddrinfo,从而给PCIeDevice分配Bus、Device、Function等信息,匹配逻辑为
PCIeAddrInfo.ComponentType == PCIeDevice.DeviceType && PCIeAddrInfo.SlotID == PCIeAddrInfo.SlotID
if addr_obj:get_prop('ComponentType') == obj:get_prop('DeviceType') and
addr_obj:get_prop('SlotID') == obj:get_prop('SlotID') and addr_obj:get_prop('SlotID') ~= 0 then
obj:sync_pcie_addr_info(addr_obj)
self:update_pcie_type(biz_topo_service, obj)
-- 对于multihost场景,需要继续遍历
ret = true
end
根据日志dump_info\AppDump\pcie_device\mdb_info.log来看,PcieAddrInfo_NIC_1_010101似乎并没有被加载上,导致没有找到相关的PCIeAddrInfo去分配信息
2026-09-04 14:47:38.534480 pcie_device ERROR: device_service.lua(607): [DeviceService] Can not find matching PCIeAddrinfo, PCIeDevice position=010105 DeviceType=13 SlotID=1
进一步发现PcieAddrInfo_NIC_1_010101的Bus再持久化设置时设置失败,导致对象挂掉
2026-09-04 14:25:21.426514 pcie_device ERROR: object_manage.lua(325): AddObject PcieAddrInfo_NIC_1_010101 failed, life_cycle_id:1, error:kepler.class.SetSyncPropertyError: The property Bus of the object PcieAddrInfo_NIC_1_010101 is a synchronous property and cannot be set
对象配置PcieAddrInfo_NIC_1中,bus使用表达式
"PcieAddrInfo_NIC_1": {
"Segment": 0,
"GroupID": 1,
"SlotID": 1,
"SocketID": "<=/Scanner_4PFlag.Status;<=/Scanner_4PFlag.Value |> expr((($1 == 0) && ($2 == 4)) ? 2 : 0)",
"Bus": "<=/Scanner_4PFlag.Status;<=/Scanner_4PFlag.Value |> expr((($1 == 0) && ($2 == 4)) ? 180 : 52)",
"Device": 0,
"Function": 0,
"Location": "CpuBoard${Slot}",
"ContainerSlot": "${Slot}",
"ComponentType": 13,
"ControllerIndex": 0,
"ControllerType": 1,
"ContainerUID": "00000001020302083825",
"ContainerUnitType": "BCU",
"GroupPosition": "PcieAddrInfo_NIC_1_${GroupPosition}",
"@Default": {
"SocketID": 0
}
},