obmc-flash-bmc: Don't overwrite u-boot env vars if already set
The BMC requests to set various u-boot environment variables during
Activation like Priority and UBI volume information. Some of these
variables may already be set to the requested value, but u-boot writes
a new entry in the u-boot env mtd device. Prevent wearing off this mtd
by checking if the values are the same before writing.
Tested: Verified that without the change the /dev/mtd2 (u-boot env)
appends a new string every time a variable is set even if it's already
set. Verified with change that no new string is added to the mtd device.
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Change-Id: I8e3c379dc078d5b6ab593fe9cbeebbbd346f29e8
diff --git a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc
index 4bb7091..b8a33ae 100644
--- a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc
+++ b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc
@@ -309,8 +309,12 @@
if [[ "$variable" == *"="* ]]; then
varName="${variable%=*}"
value="${variable##*=}"
- fw_setenv "$varName" "$value"
- fw_setenv "$varName" "$value"
+ # Write only if var is not set already to the requested value
+ currentValue="$(fw_printenv -n "${varName}")"
+ if [[ "${currenValue}" != "${value}" ]]; then
+ fw_setenv "$varName" "$value"
+ fw_setenv "$varName" "$value"
+ fi
else
fw_setenv "$variable"
fw_setenv "$variable"