When I use SMbios-ipmi-blob , I encounter some problems.
After the write operation, execute commit
ipmitool raw 0x2e 0x80 0xcf 0xc2 0x00 0x05 ... ...
It returns an unspecified error.
View ipmid logs:
Jan 01 00:01:13 s2500 ipmid[306]: Set restrictedMode = false
Jan 01 00:01:13 s2500 ipmid[306]: New interface mapping
Jan 01 00:01:14 s2500 ipmid[306]: New interface mapping
Jan 01 00:01:14 s2500 ipmid[306]: New interface mapping
Jan 01 00:14:23 s2500 ipmid[306]: Sync data with service ailure
This error is found in the returned status when calling the DBUS method agentsynchronizedata. And the agentsynchronizedata method is implemented in the smbiosmdrv2app application and is defined in mdrv2.cpp
View smbiosmdrv2app logs:
Jan 01 00:14:23 s2500 smbiosmdrv2app[332]: MDR V2 file size is smaller than mdr header
Jan 01 00:14:23 s2500 smbiosmdrv2app[332]: agent data sync failed - read data from flash failed
We find that when reading data from the file /var/lib/SMBIOS/smbios2, the length of the obtained file data is 0, resulting in this error. In fact, there are datas in the file.
cat /lib/smbios/smbios2
����TEST LTDv2.18Dec 30 2021
Then we found that when writing data to the file, it seems that the close action is not executed. So, adding smbiosFile. Close() in commit function. It seems that this error can be resolved.
In addition, there is a confused problem.
The function systeminfoupdate calls a dbus method ReScan without return values. However, it is called with a return value, and it will also produce an error.
Jan 10 09:41:24 s2500 smbiosmdrv2app[333]: Failed to query system motherboard
So, is this a problem? Or has the rescan method been updated? At the same time, I also want to know where the associated path motherboardpath will be called.
I would appreciate it if someone could solve my confusion.
Note on bugs
When I use
SMbios-ipmi-blob
, I encounter some problems.After the write operation, execute commit
ipmitool raw 0x2e 0x80 0xcf 0xc2 0x00 0x05 ... ...
It returns an unspecified error.View ipmid logs:
This error is found in the returned status when calling the DBUS method agentsynchronizedata. And the agentsynchronizedata method is implemented in the smbiosmdrv2app application and is defined in mdrv2.cpp
View smbiosmdrv2app logs:
We find that when reading data from the file
/var/lib/SMBIOS/smbios2
, the length of the obtained file data is 0, resulting in this error. In fact, there are datas in the file.cat /lib/smbios/smbios2
Then we found that when writing data to the file, it seems that the close action is not executed. So, adding
smbiosFile. Close()
in commit function. It seems that this error can be resolved.In addition, there is a confused problem. The function systeminfoupdate calls a dbus method
ReScan
without return values. However, it is called with a return value, and it will also produce an error.So, is this a problem? Or has the rescan method been updated? At the same time, I also want to know where the associated path
motherboardpath
will be called.I would appreciate it if someone could solve my confusion.