dbus-sdr: write-back to fruCache upon modification

ipmiStorageWriteFruData is a read-modify-write cycle:
1) Obtain a copy of the target FRU with getFru()
2) Modify the copy
3) Write modified copy FRU to EEPROM by calling `writeFru(fru)`
   or `writeFru(fruCache)`.

For 3) above, whether `writeFru(fru)` or `writeFru(fruCache)` is
called depends on the value of `atEnd`.
Currently fruCacue is not updated in the atEnd==false branch, where
`writeFru(fruCache)` is called. This may cause the unmodified FRU
content to be written back, as if the write did not happen.
This change adds the write-back operation.

Tested: FRU write works

Signed-off-by: Sui Chen <suichen@google.com>
Change-Id: Idfe76c97a3117289ebf2d98abfecc4c7b8f05ea1
1 file changed
tree: bb78f3425b8ef7eac79d09f00ada02dcd4ea9fb9
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. meson.build
  46. meson_options.txt
  47. OWNERS
  48. read_fru_data.cpp
  49. read_fru_data.hpp
  50. README.md
  51. selutility.cpp
  52. selutility.hpp
  53. sensordatahandler.cpp
  54. sensordatahandler.hpp
  55. sensorhandler.cpp
  56. sensorhandler.hpp
  57. settings.cpp
  58. settings.hpp
  59. storageaddsel.cpp
  60. storageaddsel.hpp
  61. storagehandler.cpp
  62. storagehandler.hpp
  63. sys_info_param.cpp
  64. sys_info_param.hpp
  65. systemintfcmds.cpp
  66. systemintfcmds.hpp
  67. testaddsel.cpp
  68. testit.cpp
  69. transporthandler.cpp
  70. transporthandler.hpp
  71. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage