summaryrefslogtreecommitdiffstats
path: root/meta-phosphor/common/recipes-phosphor/flash
diff options
context:
space:
mode:
authorAdriana Kobylak <anoo@us.ibm.com>2017-09-05 12:38:19 -0500
committerPatrick Williams <patrick@stwcx.xyz>2017-09-12 16:36:56 +0000
commitc194219294ac479b5aa823295ea8a5d54b978448 (patch)
tree15ca6b6c8c8834d74445aa709e80e6f8b89c5404 /meta-phosphor/common/recipes-phosphor/flash
parentb4c018d3eaf20d1a61ac3902c7656792b1edcdac (diff)
downloadtalos-openbmc-c194219294ac479b5aa823295ea8a5d54b978448.tar.gz
talos-openbmc-c194219294ac479b5aa823295ea8a5d54b978448.zip
obmc-flash-bmc: Add ExecStartPre and Post to update environment variables
Backup the environment variables before performing an update. Update the environment variables that point to the new volumes only if all the ExecStart commands are successful. Also ensure that the volumes exist so that the env variables point to an existing volume. Change-Id: I4f63076730f0843677b6ac8bf166c02ae36eaf2e Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Diffstat (limited to 'meta-phosphor/common/recipes-phosphor/flash')
-rw-r--r--meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc36
-rw-r--r--meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service2
2 files changed, 30 insertions, 8 deletions
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 57b557fd7..d94f472ce 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
@@ -133,10 +133,6 @@ ubi_block() {
return 1
fi
fi
- copy_env_var_to_alt ubiblock
- ubi_setenv "ubiblock=$(echo "${ubidevid}" | sed 's/_/,/')"
- copy_env_var_to_alt root
- ubi_setenv "root=${block}"
}
ubi_updatevol() {
@@ -148,10 +144,6 @@ ubi_updatevol() {
echo "Unable to update volume ${name}!"
return 1
fi
- if [[ "${name}" =~ "kernel" ]]; then
- copy_env_var_to_alt kernelname
- ubi_setenv "kernelname=${name}"
- fi
}
ubi_remove() {
@@ -226,6 +218,27 @@ mtd_write() {
flashcp -v ${img} /dev/${flashmtd}
}
+backup_env_vars() {
+ copy_env_var_to_alt kernelname
+ copy_env_var_to_alt ubiblock
+ copy_env_var_to_alt root
+}
+
+update_env_vars() {
+ vol="$(findubi rofs-"${version}")"
+ if [ -z "${vol}" ]; then
+ return 1
+ fi
+ ubidevid="${vol#ubi}"
+ block="/dev/ubiblock${ubidevid}"
+ if [ ! -e "${block}" ]; then
+ return 1
+ fi
+ ubi_setenv "kernelname=kernel-${version}"
+ ubi_setenv "ubiblock=$(echo "${ubidevid}" | sed 's/_/,/')"
+ ubi_setenv "root=${block}"
+}
+
case "$1" in
mtduboot)
reqmtd="$2"
@@ -269,6 +282,13 @@ case "$1" in
ubiremount)
remount_ubi
;;
+ preupdate)
+ backup_env_vars
+ ;;
+ postupdate)
+ version="$2"
+ update_env_vars
+ ;;
*)
echo "Invalid argument"
exit 1
diff --git a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service
index 7c2a2527b..98366fd02 100644
--- a/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service
+++ b/meta-phosphor/common/recipes-phosphor/flash/phosphor-software-manager/obmc-flash-bmc-ubiro@.service
@@ -4,7 +4,9 @@ Description=Store read-only images %I to BMC storage
[Service]
Type=oneshot
RemainAfterExit=no
+ExecStartPre=/usr/bin/env obmc-flash-bmc preupdate
ExecStart=/usr/bin/env obmc-flash-bmc ubiro {RO_MTD} rofs-%i %i
ExecStart=/usr/bin/env obmc-flash-bmc ubikernel {KERNEL_MTD} kernel-%i %i
ExecStart=/usr/bin/env obmc-flash-bmc mtduboot u-boot %i
+ExecStartPost=/usr/bin/env obmc-flash-bmc postupdate %i
SyslogIdentifier=obmc-flash-bmc
OpenPOWER on IntegriCloud